`
web3d
  • 浏览: 86397 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

Virtools脚本语言(VSL)教程 - 结构

 
阅读更多
<h3>结构定义的语法</h3>
<p>结构类型是一种用户定义的复合类型。结构可由一些不同类型的成员组成。</p>
<p>struct <em>structName</em>
{ <em>memberList</em>
};</p>
<p>实例:</p>
<pre>struct Person<br>
{<br>
String name;<br>
int age;<br>
float weight;<br>
};<br><p>每个结构成员的类型可以是基本类型、其它VSL结构或C/C++结构/类。这些类型的数组成员也被支持。</p>
<pre>struct Car<br>
{<br>
Entity3D entity;<br>
Person passengers[4];<br>
float weight;<br>
Vector velocity; <br>
};<br><p>
要访问结构的成员,你得使用 "." 运算符。</p>
<pre>void SetPerson(Person p, String name, int age, float weight)<br>
{<br><span>// Set name</span>
<br>
if (name == "")<br>
p.name = "Unknown";<br>
else<br>
p.name = name;<br><br><span>// Set age</span>
<br>
if (age &lt; 0)<br>
age = 1;<br>
p.age = age;<br><br><span>// Set weight</span>
<br>
if (weight &lt; 0)<br>
weight = 40;<br>
p.weight = weight;<br>
}<br><br>
void main()<br>
{<br>
Car car;<br>
car.entity = null;<br>
car.velocity.Set(0,0,0);<br><br>
car.weight = 1500;<br><br><span>// Set persons</span>
<br>
for (int i = 0; i &lt; 4; ++i)<br>
{<br>
String name("Passengers");<br>
name += i;<br>
SetPerson(car.passengers[i], name, rand()*20+20, rand()*30+60);<br><br><span>// Add person weight to the car weight</span>
<br>
car.weight += car.passengers[i].weight;<br>
}<br>
}<br><h3>
<a name="TOC-2"></a>
在结构上使用运算符 =, == 及 != <br>
</h3>
<p>当在结构上使用 =, == 及 != 运算符时,VSL编译器为每个具有这种被重载运算符的成员调用合适的运算符。</p>
<p>对于那些没有重载运算符的成员,这个代码会产生:</p>
<p>Operator =<br>
  Code is generated to copy memory.</p>
<p>Operator == and !=<br>
  Code is generated to compare memory.</p>
<p>实例:</p>
<pre>Person p1;<br>
Person p2;<br><br>
String name("john");<br>
SetPerson(p1, name, 30, 75);<br><pre>p2 = p1;
<p>
等价于:</p>
<pre>p2.name = p1.name; <span>// call the String operator =</span>
<br>
p2.age = p1.age;<br>
p2.weight = p1.weight;<br><pre>p2 == p1;
<p>
等价于:</p>
<pre>p2.name == p1.name; <span>// call the String operator ==</span>
<br>
p2.age == p1.age;<br>
p2.weight == p1.weight;<br><pre>p2 != p1;
<p>
等价于:</p>
<pre>p2.name != p1.name; <span>// call the String operator !=</span>
<br>
p2.age != p1.age;<br>
p2.weight != p1.weight;<br></pre></pre></pre></pre></pre></pre></pre></pre></pre></pre>
分享到:
评论

相关推荐

    virtools学习资料

    ### Virtools学习资料:VSL脚本语言入门与实践 #### 一、VSL脚本语言简介 Virtools是一款强大的3D应用开发平台,广泛应用于游戏开发、虚拟现实、建筑可视化等多个领域。Virtools提供了丰富的功能和工具集,其中VSL...

    virtools基本教材

    - **脚本语言**:Virtools脚本语言(VSL),用于编写自定义行为。 4. **参数** - **概述**:用于控制对象行为的数据值。 - **参数操作**:通过运算符改变参数的值,实现动态调整对象的状态。 5. **属性** - **...

    Virtools的VSL和SDK编程编码规则

    Virtools 是一款强大的交互式3D应用开发工具,它的VSL(Virtools Script Language)是内置的脚本语言,而SDK(Software Development Kit)则提供了更底层的编程接口。为了确保代码的质量、可读性和可维护性,遵循...

    VirTools教程

    VSL是一种专为Virtools设计的脚本语言,允许程序员深入控制交互逻辑。 4. **渲染引擎** 渲染引擎负责将3D场景转化为可视图像,支持实时预览和最终输出。开发者可以通过SDK定制渲染引擎,以满足特定需求。 5. **...

    virtools我的最爱

    它提供了多种方式进行交互式体验的创建,包括VSL(Virtools脚本语言)、脚本流程图以及SDK(软件开发工具包)。 VSL,全称为Virtools Script Language,是一种强大的脚本语言,允许开发者深入到Virtools SDK的底层...

    virtools开发之底层篇

    VSL脚本语言是Virtools中的核心部分,初学者可以从基础语法入手,逐步了解和掌握各种类型的应用。VSL部分不仅包括基本语法讲解,还涉及不同类型的VSL脚本程序及其在实际项目中的应用。 在VSL部分,作者首先介绍了...

    Virtools开发

    此外,书中还区分了“输入输出参数”和“输入输出端口”,前者是BB上的参数,后者是用于连线的端口,两者在Virtools脚本中扮演不同角色。 总的来说,《Virtools的行动纲领》是一本针对Virtools开发者深入学习的宝贵...

    虚拟仿真开发软件调查.pdf

    8. 提供Virtools脚本语言VSL(Virtools Scripting Language)与游戏行业中广泛运用的脚本语言LUA Scripting Language,其具备有关键词颜色显示系统(coloring system)、指令字符串提示功能(context-sensitive ...

    3DVIAVirtools5虚拟现实软件--介绍(中文版)归类.pdf

    对于高级开发者,它提供了SDK和VSL(Virtools Scripting Language)编程接口,能够创建自定义的交互行为和应用程序,实现无限的创意扩展。 软件内置的物理模拟(Physics)、人工智能(AI)、多用户制作环境等外挂...

Global site tag (gtag.js) - Google Analytics