Page 1 of 1

Problem with accessing vec3 properties of CurrentModel

Posted: Mon Apr 11, 2016 2:37 pm
by Rado1
Running the following example throws exception "Error in expression for node: ZExpression Cannot get address of expression: ((vec3)CurrentModel.Position". Everything is running fine if instead of CurrentModel.Position a vec3 variable (called ObjectPosition in this case) is used. Direct usage of CurrentModel.* vec3 properties as reference vec3 parameters in functions would be useful.

Remark: When writing the Model1/OnSpawn/ZExpression to editor, no syntax error is reported. Only when running the project or copy/pasting to XML editor.

Code: Select all

<?xml version="1.0" encoding="iso-8859-1" ?>
<ZApplication Name="App" Caption="ZGameEditor application" FileVersion="2">
  <OnLoaded>
    <ZLibrary>
      <Source>
<![CDATA[vec3 ObjectPosition;

void randMax(ref vec3 pos, float max){
  pos.X = random(0, max);
  pos.Y = random(0, max);
  pos.Z = random(0, max);
}]]>
      </Source>
    </ZLibrary>
    <ZExpression>
      <Expression>
<![CDATA[for(int i = 0; i < 100; ++i)
  createModel(Model1);]]>
      </Expression>
    </ZExpression>
  </OnLoaded>
  <Content>
    <Model Name="Model1" Scale="0.1 0.1 0.1">
      <OnSpawn>
        <ZExpression>
          <Expression>
<![CDATA[randMax(CurrentModel.Position, 3);

// this works:
//randMax(ObjectPosition, 3);
//CurrentModel.Position = ObjectPosition;]]>
          </Expression>
        </ZExpression>
      </OnSpawn>
      <OnRender>
        <RenderSprite/>
      </OnRender>
    </Model>
  </Content>
</ZApplication>

Re: Problem with accessing vec3 properties of CurrentModel

Posted: Mon Apr 11, 2016 4:01 pm
by Kjell
Hi Rado1,

Although i suspect the snippet you posted was just a example illustrating the bug .. the following expression gives the exact same result as your randMax function with 3 separate random calls.

Code: Select all

CurrentModel.Position = random(0, 3);
Just to make sure that anybody who's reading this is aware of that / doesn't get confused :wink:

K

Re: Problem with accessing vec3 properties of CurrentModel

Posted: Mon Apr 11, 2016 4:12 pm
by Rado1
Sure, I always try to illustrate problems on small examples to be easy reproduced by people (mainly Ville). I would like to use this feature in much bigger project(s) to create effective/small code. But writing "pos = random(0, max);" would make it better having the same functionality.