~ubuntu-branches/debian/sid/ember/sid

« back to all changes in this revision

Viewing changes to src/components/ogre/manipulation/entityrecipes/boulder.entityrecipe

  • Committer: Bazaar Package Importer
  • Author(s): Michael Koch
  • Date: 2009-07-23 07:46:40 UTC
  • Revision ID: james.westby@ubuntu.com-20090723074640-wh0ukzis0kda36qv
Tags: upstream-0.5.6
ImportĀ upstreamĀ versionĀ 0.5.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<entityrecipes>
 
2
  <entityrecipe name="boulder">
 
3
    <author>Alexey Torkhov</author>
 
4
    <description>
 
5
      This is boulder recipe
 
6
    </description>
 
7
    <entity type="boulder">
 
8
      <atlas>
 
9
        <map>
 
10
          <list name="bbox">$bbox</list>
 
11
          <float name="mass">$mass</float>
 
12
          <string name="style">$style</string>
 
13
        </map>
 
14
      </atlas>
 
15
    </entity>
 
16
    <adapters>
 
17
      <adapter name="mass" type="number" title="Mass" default="100000"/>
 
18
      <adapter name="massdev" type="number" title="Mass std. dev." default="10000"/>
 
19
      <adapter name="style" type="string" title="Style" allowrandom="yes" default="Random">
 
20
        <item value="a">Boulder A</item>
 
21
        <item value="b">Boulder B</item>
 
22
        <item value="c">Boulder C</item>
 
23
        <item value="d">Boulder D</item>
 
24
      </adapter>
 
25
    </adapters>
 
26
    <bindings>
 
27
      <bind name="bbox" func="boulder.calcSize">
 
28
        <adapter name="mass" />
 
29
        <adapter name="massdev" />
 
30
      </bind>
 
31
      <bind name="mass">
 
32
        <adapter name="mass" />
 
33
      </bind>
 
34
      <bind name="style">
 
35
        <adapter name="style" />
 
36
      </bind>
 
37
    </bindings>
 
38
    <script><![CDATA[
 
39
      boulder = {}
 
40
      function boulder.calcSize(a, b)
 
41
        local density = 2500  * 0.52 -- our boulder is not cubic, 0.52 is rough volume of its size 1
 
42
 
 
43
        local massmean = a:asNum()
 
44
        local massdev = b:asNum()
 
45
        local mass = math.abs(math.randn(massmean, massdev))
 
46
        local volume = mass / density
 
47
        local len = volume^(1/3)
 
48
 
 
49
        local bbox = Atlas.Message.ListType()
 
50
        bbox:push_back(-len/2)
 
51
        bbox:push_back(-len/2)
 
52
        bbox:push_back(0)
 
53
        bbox:push_back(len/2)
 
54
        bbox:push_back(len/2)
 
55
        bbox:push_back(len)
 
56
        return Atlas.Message.Element(bbox)
 
57
      end
 
58
    ]]></script>
 
59
  </entityrecipe>
 
60
</entityrecipes>