<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Esenthel Forum - Game Classes]]></title>
		<link>https://esenthel.com/forum/</link>
		<description><![CDATA[Esenthel Forum - https://esenthel.com/forum]]></description>
		<pubDate>Sun, 19 Apr 2026 12:21:10 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[jumping --> chained animation?]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=10459</link>
			<pubDate>Fri, 27 Aug 2021 13:59:41 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=10459</guid>
			<description><![CDATA[Hey there,<br />
<br />
and another one:<br />
<br />
I usually create my jump animations in three parts:<br />
<br />
startedJumping? ---&gt; jumpStart.anim<br />
inAir? -&gt; jumpLoop.anim<br />
isGrounded? --&gt; jumpLanding.anim<br />
<br />
How can I do this in Esenthel?<br />
Is this possible with the Game.chr?<br />
Or do I have to roll my own custom class?<br />
And how do I chain animations?]]></description>
			<content:encoded><![CDATA[Hey there,<br />
<br />
and another one:<br />
<br />
I usually create my jump animations in three parts:<br />
<br />
startedJumping? ---&gt; jumpStart.anim<br />
inAir? -&gt; jumpLoop.anim<br />
isGrounded? --&gt; jumpLanding.anim<br />
<br />
How can I do this in Esenthel?<br />
Is this possible with the Game.chr?<br />
Or do I have to roll my own custom class?<br />
And how do I chain animations?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Inserting character in world]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=10316</link>
			<pubDate>Fri, 16 Apr 2021 12:33:59 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=10316</guid>
			<description><![CDATA[Hi all,<br />
<br />
Back in the day, this used to work to insert a character into the world:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>void create(Int ID, Str name, Vec2 position, Flt scale)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;Game::ObjParams obj; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.create(*Game::Objs(UID(xx, xx, xx, xx)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.scale (true, scale);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.matrix.pos.x = position.x;<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.matrix.pos.z = position.y;<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.matrix.pos.y = Game::World.hmHeight(position);&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;UID uid; <br />
&nbsp;&nbsp;&nbsp;&nbsp;uid.fromText(L"OBJ_CHR");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.type(true, uid);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;super::create(obj);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;= name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;this-&gt;ID = ID; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ctrl.actor.mass(1).kinematic(true).collision(true).group(ACTOR_NPC).obj(thi&#8203;s);<br />
}</code></div></div>
<br />
This is what my old code has to insert a character into the world (server sided AI). I have issues finding the equivalent of "Game::ObjParams" [I thought it was ObjectPtr?].<br />
<br />
How can I insert a character, like the example above, in the world through code?]]></description>
			<content:encoded><![CDATA[Hi all,<br />
<br />
Back in the day, this used to work to insert a character into the world:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>void create(Int ID, Str name, Vec2 position, Flt scale)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;Game::ObjParams obj; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.create(*Game::Objs(UID(xx, xx, xx, xx)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.scale (true, scale);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.matrix.pos.x = position.x;<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.matrix.pos.z = position.y;<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.matrix.pos.y = Game::World.hmHeight(position);&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;UID uid; <br />
&nbsp;&nbsp;&nbsp;&nbsp;uid.fromText(L"OBJ_CHR");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.type(true, uid);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;super::create(obj);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;= name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;this-&gt;ID = ID; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ctrl.actor.mass(1).kinematic(true).collision(true).group(ACTOR_NPC).obj(thi&#8203;s);<br />
}</code></div></div>
<br />
This is what my old code has to insert a character into the world (server sided AI). I have issues finding the equivalent of "Game::ObjParams" [I thought it was ObjectPtr?].<br />
<br />
How can I insert a character, like the example above, in the world through code?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Kb.eat() usage]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=10306</link>
			<pubDate>Wed, 14 Apr 2021 22:12:32 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=10306</guid>
			<description><![CDATA[Hi there,<br />
<br />
From what I understood from the header is that the eat() method can be used to "disable" keyboard usage in other functionality: it should disable, for example, the movement keys from my character as 'it's a different code'.<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>virtual void update(C GuiPC &amp;gpc)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.update(gpc);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Gui.kb()==this)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Kb.bp(KB_ENTER))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kb.eat(KB_ENTER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Str t=T();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.clip(pnconstants::MaxChatLength);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(t != "" || t != " ")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Chat.New(ChrData.name+": "+t);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClientSendChat(Server, t); hide();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hide();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Kb.bp(KB_ENTER))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kb.eat(KB_ENTER); clear().activate();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp; }</code></div></div>
<br />
However, it doesn't seem to work no matter where I place it. Did I perhaps misunderstand the header information? How can I disable other functionality by keyboard input as soon as the TextLine is being used to type a message?]]></description>
			<content:encoded><![CDATA[Hi there,<br />
<br />
From what I understood from the header is that the eat() method can be used to "disable" keyboard usage in other functionality: it should disable, for example, the movement keys from my character as 'it's a different code'.<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>virtual void update(C GuiPC &amp;gpc)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.update(gpc);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Gui.kb()==this)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Kb.bp(KB_ENTER))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kb.eat(KB_ENTER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Str t=T();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.clip(pnconstants::MaxChatLength);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(t != "" || t != " ")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Chat.New(ChrData.name+": "+t);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClientSendChat(Server, t); hide();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hide();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Kb.bp(KB_ENTER))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kb.eat(KB_ENTER); clear().activate();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp; }</code></div></div>
<br />
However, it doesn't seem to work no matter where I place it. Did I perhaps misunderstand the header information? How can I disable other functionality by keyboard input as soon as the TextLine is being used to type a message?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[XML - Load from Memory]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=10295</link>
			<pubDate>Sun, 11 Apr 2021 07:51:27 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=10295</guid>
			<description><![CDATA[Hi all,<br />
<br />
As I am working on an online game, I want to make use of some XML files that I have stored on the server (e.g showing some news, loading some server information). As per the post here in this thread, Greg stated that loading xml from memory would be added ( <a href="https://www.esenthel.com/forum/showthread.php?tid=3113" target="_blank">https://www.esenthel.com/forum/showthread.php?tid=3113</a> ).<br />
<br />
The load method from XmlData only accepts a name, id or file, but not any file from memory.<br />
<br />
Currently, I have worked around it by downloading the files locally to the machine from the webserver using the Download class and reading it from there. Although preferably I would not like to store these xml files on the client's machines.<br />
<br />
Has anyone tackled this beforeand found an elegant solution that did not require saving the files locally first before reading them?]]></description>
			<content:encoded><![CDATA[Hi all,<br />
<br />
As I am working on an online game, I want to make use of some XML files that I have stored on the server (e.g showing some news, loading some server information). As per the post here in this thread, Greg stated that loading xml from memory would be added ( <a href="https://www.esenthel.com/forum/showthread.php?tid=3113" target="_blank">https://www.esenthel.com/forum/showthread.php?tid=3113</a> ).<br />
<br />
The load method from XmlData only accepts a name, id or file, but not any file from memory.<br />
<br />
Currently, I have worked around it by downloading the files locally to the machine from the webserver using the Download class and reading it from there. Although preferably I would not like to store these xml files on the client's machines.<br />
<br />
Has anyone tackled this beforeand found an elegant solution that did not require saving the files locally first before reading them?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Environment - Setting through code]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=10156</link>
			<pubDate>Thu, 22 Oct 2020 16:43:35 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=10156</guid>
			<description><![CDATA[Hi there,<br />
<br />
Having some difficulty in setting the environment parameters through code. In the InitGame() function, whenever I do this, it works as expected:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>if(Game.World.settings().environment)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Game.World.settings().environment-&gt;set();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Load the settings from the editor into the env_World_outdoor Environment<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env_world_outdoor.get();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env_world_outdoor.fog.density = 0.02523040f; env_world_outdoor.fog.set();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env_world_outdoor.set();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; }</code></div></div>
<br />
env_world_outdoor is an object of class "Environment". How would I go and update this setting during runtime? My idea is as follows, something along these lines:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>if (g_hour &gt; 20 &amp;&amp; g_hour &lt; 5) // g_hour is current hour of the day<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp; env_world_outdoor.fog.density = 0.035f; env_world_outdoor.fog.density.set();<br />
}</code></div></div>
<br />
Putting the check in the update loop did not give the expected results. Any help is greatly appreciated!]]></description>
			<content:encoded><![CDATA[Hi there,<br />
<br />
Having some difficulty in setting the environment parameters through code. In the InitGame() function, whenever I do this, it works as expected:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>if(Game.World.settings().environment)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Game.World.settings().environment-&gt;set();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Load the settings from the editor into the env_World_outdoor Environment<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env_world_outdoor.get();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env_world_outdoor.fog.density = 0.02523040f; env_world_outdoor.fog.set();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env_world_outdoor.set();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; }</code></div></div>
<br />
env_world_outdoor is an object of class "Environment". How would I go and update this setting during runtime? My idea is as follows, something along these lines:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>if (g_hour &gt; 20 &amp;&amp; g_hour &lt; 5) // g_hour is current hour of the day<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp; env_world_outdoor.fog.density = 0.035f; env_world_outdoor.fog.density.set();<br />
}</code></div></div>
<br />
Putting the check in the update loop did not give the expected results. Any help is greatly appreciated!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Search for Objects having certain base]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9902</link>
			<pubDate>Thu, 27 Feb 2020 17:52:54 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9902</guid>
			<description><![CDATA[Is there a possibility to get a list of Objects having certain base Object? I found method hasBase() but first I need to go through all objects, which lies on the file system (directly or in pak archives) and call this method.<br />
<br />
Is there any neat way to do this without checking every object in the root directory? Does the engine keep somewhere folders hierarchy visible in the Editor and it can be accessed even in published version of application?]]></description>
			<content:encoded><![CDATA[Is there a possibility to get a list of Objects having certain base Object? I found method hasBase() but first I need to go through all objects, which lies on the file system (directly or in pak archives) and call this method.<br />
<br />
Is there any neat way to do this without checking every object in the root directory? Does the engine keep somewhere folders hierarchy visible in the Editor and it can be accessed even in published version of application?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Please explain this function to me.]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9455</link>
			<pubDate>Mon, 24 Dec 2018 13:21:40 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9455</guid>
			<description><![CDATA[Hi there!<br />
Can someone kindly explain to me the meaning of this line of code?<br />
I have been using it without being able to explain it to myself.<br />
<br />
/******************************************************************************/<br />
// Helper functions/classes used for dropping down item<br />
int UtoS(uint x) // return unsigned to signed value<br />
{<br />
   // 0 -&gt;  0<br />
   // 1 -&gt;  1<br />
   // 2 -&gt; -1<br />
   // 3 -&gt;  2<br />
   // 4 -&gt; -2<br />
   // ..<br />
   return (x&amp;1) ? (x+1)&gt;&gt;1 : -int((x+1)&gt;&gt;1);<br />
}<br />
Thanks in advance!]]></description>
			<content:encoded><![CDATA[Hi there!<br />
Can someone kindly explain to me the meaning of this line of code?<br />
I have been using it without being able to explain it to myself.<br />
<br />
/******************************************************************************/<br />
// Helper functions/classes used for dropping down item<br />
int UtoS(uint x) // return unsigned to signed value<br />
{<br />
   // 0 -&gt;  0<br />
   // 1 -&gt;  1<br />
   // 2 -&gt; -1<br />
   // 3 -&gt;  2<br />
   // 4 -&gt; -2<br />
   // ..<br />
   return (x&amp;1) ? (x+1)&gt;&gt;1 : -int((x+1)&gt;&gt;1);<br />
}<br />
Thanks in advance!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Which Base class for my Lamborghini?]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9446</link>
			<pubDate>Wed, 21 Nov 2018 02:17:25 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9446</guid>
			<description><![CDATA[Hi!<br />
I want to write a class for my car.Common sense tells me that I should extend the Game.Kinematic like below:<br />
Class Lamborghini:Game.kinematic <br />
{<br />
//<br />
}<br />
I reasoned that a moving car is a kinematic object.But when I do that the Lamborghini moves through walls.<br />
<br />
If I extend Game.Chr class like below:<br />
Class Lamborghini:Game.Chr <br />
{<br />
//<br />
}<br />
The car does not go through walls.But unless I want to code "Optimus Prime" in the "Transformers", I don't think this is a good idea.<br />
What is the right class to implement a Lamborghini class in EE.<br />
Thanks.]]></description>
			<content:encoded><![CDATA[Hi!<br />
I want to write a class for my car.Common sense tells me that I should extend the Game.Kinematic like below:<br />
Class Lamborghini:Game.kinematic <br />
{<br />
//<br />
}<br />
I reasoned that a moving car is a kinematic object.But when I do that the Lamborghini moves through walls.<br />
<br />
If I extend Game.Chr class like below:<br />
Class Lamborghini:Game.Chr <br />
{<br />
//<br />
}<br />
The car does not go through walls.But unless I want to code "Optimus Prime" in the "Transformers", I don't think this is a good idea.<br />
What is the right class to implement a Lamborghini class in EE.<br />
Thanks.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Skeleton run different Animation]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8471</link>
			<pubDate>Sat, 02 May 2015 13:03:48 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8471</guid>
			<description><![CDATA[Hi Esenthel<br />
<br />
I have a  Skeleton with three bones:<br />
<br />
BoneA  - main bone;<br />
BoneB  - bones of the upper half of skeleton(Parent bone is BoneA);<br />
BoneC  - bones of the lower half of skeleton(Parent bone is BoneA);<br />
<br />
now I have two animations:<br />
<br />
attack  - <br />
walk - <br />
<br />
I want BoneB run the <span style="font-weight: bold;">attack</span> animation<br />
and BoneC run the <span style="font-weight: bold;">walk</span> anination<br />
<br />
how can i do it?<br />
<br />
thanks.]]></description>
			<content:encoded><![CDATA[Hi Esenthel<br />
<br />
I have a  Skeleton with three bones:<br />
<br />
BoneA  - main bone;<br />
BoneB  - bones of the upper half of skeleton(Parent bone is BoneA);<br />
BoneC  - bones of the lower half of skeleton(Parent bone is BoneA);<br />
<br />
now I have two animations:<br />
<br />
attack  - <br />
walk - <br />
<br />
I want BoneB run the <span style="font-weight: bold;">attack</span> animation<br />
and BoneC run the <span style="font-weight: bold;">walk</span> anination<br />
<br />
how can i do it?<br />
<br />
thanks.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Creating mesh with Editor Interface]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=7982</link>
			<pubDate>Mon, 08 Sep 2014 15:27:27 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=7982</guid>
			<description><![CDATA[Hi,<br />
How can I create new mesh using Editor Interface? Is created automatically with ELM_OBJ? If yes, how can I get access to it? If no, how can I create manually new blank mesh in Editor?]]></description>
			<content:encoded><![CDATA[Hi,<br />
How can I create new mesh using Editor Interface? Is created automatically with ELM_OBJ? If yes, how can I get access to it? If no, how can I create manually new blank mesh in Editor?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[World.PathFind] Behavior of partial pathfinding]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=7736</link>
			<pubDate>Thu, 08 May 2014 13:36:55 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=7736</guid>
			<description><![CDATA[Hi all,<br />
<br />
Since the fix in pathfin for partial or no partial path (see <a href="http://www.esenthel.com/community/showthread.php?tid=7431" target="_blank">PostOnPartialPathfinding</a>) I've been messing around again with this feature.<br />
<br />
So what I'm trying to do is to have the closest point to my destination in straight line. I thought, hell let's use pathfinding in "closest" mode :<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Game.World.path().find(Chrs[0].pos(), phys_hit.plane.pos,&nbsp;&nbsp;Chrs[0].path, 2, PMF_WALK, true);</code></div></div>
<br />
but the result is not what attended, it's more like it's searching the total path for the closest point, then truncate it only two keep the first two points and not try to find in 2 points the closest path.<br />
<a href="http://postimg.org/image/yrc0nwxuz/" target="_blank"><img src="http://s17.postimg.org/yrc0nwxuz/Esenthel_Path2.jpg" border="0" alt="[Image: Esenthel_Path2.jpg]" /></a><br />
<br />
It's surely because of the way of how it's build, woch might defer from the goals I'm trying to reach.<br />
<br />
As anyone tryed to do the same thing and used other tools ? I'm seeing possible quickfixes (raycast to check when I go out of the pathmesh ? regular check on the pathmesh ?)... But their must be cleaner ways (I couldn't find EE2.0 pthfind source code so I assume it's not accessible with EE2.0 licence ? ...).<br />
<br />
Have a nicea day all !]]></description>
			<content:encoded><![CDATA[Hi all,<br />
<br />
Since the fix in pathfin for partial or no partial path (see <a href="http://www.esenthel.com/community/showthread.php?tid=7431" target="_blank">PostOnPartialPathfinding</a>) I've been messing around again with this feature.<br />
<br />
So what I'm trying to do is to have the closest point to my destination in straight line. I thought, hell let's use pathfinding in "closest" mode :<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Game.World.path().find(Chrs[0].pos(), phys_hit.plane.pos,&nbsp;&nbsp;Chrs[0].path, 2, PMF_WALK, true);</code></div></div>
<br />
but the result is not what attended, it's more like it's searching the total path for the closest point, then truncate it only two keep the first two points and not try to find in 2 points the closest path.<br />
<a href="http://postimg.org/image/yrc0nwxuz/" target="_blank"><img src="http://s17.postimg.org/yrc0nwxuz/Esenthel_Path2.jpg" border="0" alt="[Image: Esenthel_Path2.jpg]" /></a><br />
<br />
It's surely because of the way of how it's build, woch might defer from the goals I'm trying to reach.<br />
<br />
As anyone tryed to do the same thing and used other tools ? I'm seeing possible quickfixes (raycast to check when I go out of the pathmesh ? regular check on the pathmesh ?)... But their must be cleaner ways (I couldn't find EE2.0 pthfind source code so I assume it's not accessible with EE2.0 licence ? ...).<br />
<br />
Have a nicea day all !]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Animatable class working example]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=7687</link>
			<pubDate>Thu, 24 Apr 2014 09:45:04 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=7687</guid>
			<description><![CDATA[Lectori salutem,<br />
<br />
I'm running into a small issue here with getting the OBJ_ANIMATABLE's to work properly, instead of just showing up and mocking me by not animating..<br />
<br />
I defined:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Game.ObjMap&lt;Game.Animatable&gt; ObjAnimatable;</code></div></div>
and of course set it's object type to OBJ_ANIMATABLE like so in the InitGame()<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>.setObjType(ObjAnimatable&nbsp;&nbsp;&nbsp;&nbsp;, OBJ_ANIMATABLE&nbsp;&nbsp;&nbsp;&nbsp; )</code></div></div>
<br />
the OBJ_ANIMATABLE has the following properties:<br />
Element ID : anim<br />
<br />
I created a cube with a turning animation, which works perfectly in the tutorial (following Ozmodian's example, but with 3DS MAX); with the above additions to the project, the cube shows up nicely, but it won't animate.<br />
<br />
I changed the params of the cube to fit the example, but still no luck; Am I missing something?<br />
<br />
Perhaps someone has a working example of the Animatable objects, as there is no OBJ_ANIMATABLE object class in the tutorials?<br />
<br />
Reference threads:<br />
<a href="http://www.esenthel.com/community/showthread.php?tid=7454" target="_blank">http://www.esenthel.com/community/showth...p?tid=7454</a><br />
<a href="http://www.esenthel.com/community/showthread.php?tid=6362" target="_blank">http://www.esenthel.com/community/showth...p?tid=6362</a>]]></description>
			<content:encoded><![CDATA[Lectori salutem,<br />
<br />
I'm running into a small issue here with getting the OBJ_ANIMATABLE's to work properly, instead of just showing up and mocking me by not animating..<br />
<br />
I defined:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Game.ObjMap&lt;Game.Animatable&gt; ObjAnimatable;</code></div></div>
and of course set it's object type to OBJ_ANIMATABLE like so in the InitGame()<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>.setObjType(ObjAnimatable&nbsp;&nbsp;&nbsp;&nbsp;, OBJ_ANIMATABLE&nbsp;&nbsp;&nbsp;&nbsp; )</code></div></div>
<br />
the OBJ_ANIMATABLE has the following properties:<br />
Element ID : anim<br />
<br />
I created a cube with a turning animation, which works perfectly in the tutorial (following Ozmodian's example, but with 3DS MAX); with the above additions to the project, the cube shows up nicely, but it won't animate.<br />
<br />
I changed the params of the cube to fit the example, but still no luck; Am I missing something?<br />
<br />
Perhaps someone has a working example of the Animatable objects, as there is no OBJ_ANIMATABLE object class in the tutorials?<br />
<br />
Reference threads:<br />
<a href="http://www.esenthel.com/community/showthread.php?tid=7454" target="_blank">http://www.esenthel.com/community/showth...p?tid=7454</a><br />
<a href="http://www.esenthel.com/community/showthread.php?tid=6362" target="_blank">http://www.esenthel.com/community/showth...p?tid=6362</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[EE::Image]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=7499</link>
			<pubDate>Sun, 16 Feb 2014 19:52:47 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=7499</guid>
			<description><![CDATA[Hello~ <br />
<br />
I have a couple questions regarding the Image class. I'm doing some work with some modified images, but I can't figure a couple things out:<br />
<br />
1) What is d? The comments mention depth, but I'm not sure what that means for a 2D image. It doesn't look to be the color depth, as that looks like it's set using the IMAGE_TYPE settings. <br />
<br />
2) The Image::Crop function asks for x, y, z, w, h, and d. I figured x and y were the location of the top left corner of a rectangle h high and w wide designating the area to copy to dest, but I haven't been able to get anything but a transparent texture from it, unless I'm copying an entire image. <br />
<br />
3) I've been attempting to use Image::color or the pixX() methods to modify the color of some of the pixels in the image, but again, it doesn't seem to make any difference. My best guess is that the pix and color functions are specific to certain IMAGE_TYPES or _MODES. Can IMAGE_2D be modified? How does one properly modify an image?<br />
<br />
4) I would like to take a dynamically created image- specifically one stitched together from other existing images- and add it to the Images cache. I have not been able to find a way to do this, aside from(the less than optimal) saving to the hard drive then loading-but even this fails: <br />
myImage.ExportTGA( "tex.tga" ); <br />
image_ptr = Images.ptrRequire( "tex.tga" );<br />
This gives me an "Unable to load" error. The exported texture is created, though. Possibly because it's trying to load it before it's finished writing to the hard drive? Either way, I would like to be able to add an asset directly to the cache to be used by UID like images in the editor. Is this possible?<br />
<br />
Thanks~]]></description>
			<content:encoded><![CDATA[Hello~ <br />
<br />
I have a couple questions regarding the Image class. I'm doing some work with some modified images, but I can't figure a couple things out:<br />
<br />
1) What is d? The comments mention depth, but I'm not sure what that means for a 2D image. It doesn't look to be the color depth, as that looks like it's set using the IMAGE_TYPE settings. <br />
<br />
2) The Image::Crop function asks for x, y, z, w, h, and d. I figured x and y were the location of the top left corner of a rectangle h high and w wide designating the area to copy to dest, but I haven't been able to get anything but a transparent texture from it, unless I'm copying an entire image. <br />
<br />
3) I've been attempting to use Image::color or the pixX() methods to modify the color of some of the pixels in the image, but again, it doesn't seem to make any difference. My best guess is that the pix and color functions are specific to certain IMAGE_TYPES or _MODES. Can IMAGE_2D be modified? How does one properly modify an image?<br />
<br />
4) I would like to take a dynamically created image- specifically one stitched together from other existing images- and add it to the Images cache. I have not been able to find a way to do this, aside from(the less than optimal) saving to the hard drive then loading-but even this fails: <br />
myImage.ExportTGA( "tex.tga" ); <br />
image_ptr = Images.ptrRequire( "tex.tga" );<br />
This gives me an "Unable to load" error. The exported texture is created, though. Possibly because it's trying to load it before it's finished writing to the hard drive? Either way, I would like to be able to add an asset directly to the cache to be used by UID like images in the editor. Is this possible?<br />
<br />
Thanks~]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[MMO's character : mesh animated with CHR's cskel]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=7405</link>
			<pubDate>Wed, 08 Jan 2014 19:18:38 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=7405</guid>
			<description><![CDATA[Hi,<br />
<br />
I have some issues when I try to draw my CHR's cloth <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" /><br />
First things first : my cloth has been animated in Maya with the same skeleton used for my CHR mesh.<br />
The idea was to apply the same cskel to my cloth so that it would be drawn exactly at the right moment at the right position.<br />
<br />
I placed my cloth drawing in the Inventory class of the MMO code.<br />
<br />
In the update function :<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>void update(CSkeleton &amp;cskel, Chr *owner)<br />
{<br />
[...]<br />
if (valid(SLOT_BODY))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Item&nbsp;&nbsp; &amp;item&nbsp;&nbsp;=T.item(slots[SLOT_BODY]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (item.type == EQUIP_BASE)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(C OrientP *point=cskel.findPoint(8"Base")) // Name of my parent bone's slot.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Nothing to be updated here, see draw functions<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</code></div></div>
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>// draw<br />
&nbsp;&nbsp; uint drawPrepare(CSkeleton &amp;cskel)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// draw items in hands<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint modes=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_ARM_L))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modes|=item(slots[SLOT_ARM_L]).drawPrepare();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_ARM_R))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modes|=item(slots[SLOT_ARM_R]).drawPrepare();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_HEAD))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modes|=item(slots[SLOT_HEAD]).drawPrepare();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_BODY))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modes|=item(slots[SLOT_BODY]).drawPrepare(cskel); // We're using the CHR's cskel without any fear...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return modes;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; void drawShadow(CSkeleton &amp;cskel)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// draw items in hands<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_ARM_L))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item(slots[SLOT_ARM_L]).drawShadow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_ARM_R))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item(slots[SLOT_ARM_R]).drawShadow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_HEAD))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item(slots[SLOT_HEAD]).drawShadow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_BODY))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item(slots[SLOT_BODY]).drawShadow(cskel);<br />
&nbsp;&nbsp; }</code></div></div>
<br />
<br />
The problem is that <span style="font-weight: bold;">sometimes </span>the cloth isn't drawn(the character is naked.)<br />
Could it be a problem if cskel update ?<br />
Or bad init ?<br />
<br />
Thanks for your help !]]></description>
			<content:encoded><![CDATA[Hi,<br />
<br />
I have some issues when I try to draw my CHR's cloth <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" /><br />
First things first : my cloth has been animated in Maya with the same skeleton used for my CHR mesh.<br />
The idea was to apply the same cskel to my cloth so that it would be drawn exactly at the right moment at the right position.<br />
<br />
I placed my cloth drawing in the Inventory class of the MMO code.<br />
<br />
In the update function :<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>void update(CSkeleton &amp;cskel, Chr *owner)<br />
{<br />
[...]<br />
if (valid(SLOT_BODY))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Item&nbsp;&nbsp; &amp;item&nbsp;&nbsp;=T.item(slots[SLOT_BODY]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (item.type == EQUIP_BASE)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(C OrientP *point=cskel.findPoint(8"Base")) // Name of my parent bone's slot.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Nothing to be updated here, see draw functions<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</code></div></div>
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>// draw<br />
&nbsp;&nbsp; uint drawPrepare(CSkeleton &amp;cskel)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// draw items in hands<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint modes=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_ARM_L))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modes|=item(slots[SLOT_ARM_L]).drawPrepare();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_ARM_R))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modes|=item(slots[SLOT_ARM_R]).drawPrepare();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_HEAD))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modes|=item(slots[SLOT_HEAD]).drawPrepare();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_BODY))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modes|=item(slots[SLOT_BODY]).drawPrepare(cskel); // We're using the CHR's cskel without any fear...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return modes;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; void drawShadow(CSkeleton &amp;cskel)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// draw items in hands<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_ARM_L))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item(slots[SLOT_ARM_L]).drawShadow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_ARM_R))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item(slots[SLOT_ARM_R]).drawShadow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_HEAD))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item(slots[SLOT_HEAD]).drawShadow();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(valid(SLOT_BODY))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item(slots[SLOT_BODY]).drawShadow(cskel);<br />
&nbsp;&nbsp; }</code></div></div>
<br />
<br />
The problem is that <span style="font-weight: bold;">sometimes </span>the cloth isn't drawn(the character is naked.)<br />
Could it be a problem if cskel update ?<br />
Or bad init ?<br />
<br />
Thanks for your help !]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Is World::update() multi-threaded?]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=7335</link>
			<pubDate>Mon, 16 Dec 2013 07:28:14 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=7335</guid>
			<description><![CDATA[The comments for World::update() state that it calls update on ever active game object. I'm just wondering if this is multi-threaded? i.e. are multi objects being updated at once if the system has more than one CPU core for example?<br />
<br />
If not, is this a possibility?]]></description>
			<content:encoded><![CDATA[The comments for World::update() state that it calls update on ever active game object. I'm just wondering if this is multi-threaded? i.e. are multi objects being updated at once if the system has more than one CPU core for example?<br />
<br />
If not, is this a possibility?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[EditorInterface::worldObjGetData Error]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=7224</link>
			<pubDate>Sun, 03 Nov 2013 10:33:08 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=7224</guid>
			<description><![CDATA[Hi,<br />
<br />
I'm occasionally getting an "Can't load enum ...." error message when using worldObjGetData();<br />
<br />
If I use "selected only", I get it on a few objects in my scene only. If I use it on all objects in the area, I get the error all the time.<br />
<br />
What exactly would cause the error? I've tried changing the object class, removed all the params, but it's still causing the error when I select those objects.<br />
<br />
I'm using it like this, and don't see anything wrong with this. If I comment out everything but this line, I still get the error. The world is loaded, objects is empty and not used anywhere else..<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>// Get all selected objects<br />
&nbsp;&nbsp; if(EI.worldObjGetData(EI.curWorld(), objects, null, null, true, false))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;....<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</code></div></div>
<br />
Any ideas?]]></description>
			<content:encoded><![CDATA[Hi,<br />
<br />
I'm occasionally getting an "Can't load enum ...." error message when using worldObjGetData();<br />
<br />
If I use "selected only", I get it on a few objects in my scene only. If I use it on all objects in the area, I get the error all the time.<br />
<br />
What exactly would cause the error? I've tried changing the object class, removed all the params, but it's still causing the error when I select those objects.<br />
<br />
I'm using it like this, and don't see anything wrong with this. If I comment out everything but this line, I still get the error. The world is loaded, objects is empty and not used anywhere else..<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>// Get all selected objects<br />
&nbsp;&nbsp; if(EI.worldObjGetData(EI.curWorld(), objects, null, null, true, false))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;....<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</code></div></div>
<br />
Any ideas?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[trigger footsteps on embedded object]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=7054</link>
			<pubDate>Thu, 05 Sep 2013 20:33:42 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=7054</guid>
			<description><![CDATA[Hello agian.<br />
<br />
I'm working on footsteps now. Basically I play a sound file when animateStepOccured is called, so that part is easy. But to decide on the type of sound, i look at the material below the user. Also very easy: <br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">hmMaterial</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">xz</span><span style="color: #007700">())-&gt;</span><span style="color: #0000BB">user_type</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>
<br />
I even found some code to play a different sound when the character walks through shallow water.<br />
<br />
But what I cannot find out: if the character walks on an object, like a bridge or a wall, how to find out the material type? <br />
<br />
That kind of objects is typically embedded in the terrain. Having custom classes for every building, bridge and other object just because I want to know what kind of footstep to play doesn't seem like the right solution. On the other hand, playing a 'wooden' footstep if on a bridge and a more 'soggy' one when walking below it seems not too far fetched, or does it?<br />
<br />
So far i tried:<br />
1. doing a physics ray below the character. But I don't get the objects that are imbedded with the terrain, is that correct?<br />
2. Going through all embedded objects in the current Area and see if there is a Cuts(posBelowActor, embeddedObjectShape). I never get a hit though. I tried the same with terrain_objs instead of embed_objs, but still no hits.<br />
<br />
I have included the code for 2. below, for reference. Still, I'd think an easy method to find out the material you walk on, even if it is a terrain object, could be useful for about any game. I hope i've just overlooked something.<br />
<br />
Regards,<br />
<br />
yvan<br />
<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">void&nbsp;character</span><span style="color: #007700">::</span><span style="color: #0000BB">character</span><span style="color: #007700">::</span><span style="color: #0000BB">animateStepOccured</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Vec&nbsp;p&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">pos</span><span style="color: #007700">();<br />&nbsp;&nbsp;</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">y&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">hmHeight</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">xz</span><span style="color: #007700">());<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Int&nbsp;type&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">MUT_DEFAULT</span><span style="color: #007700">;<br />&nbsp;&nbsp;if(</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">waterUnder</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;this&nbsp;means&nbsp;we're&nbsp;just&nbsp;below&nbsp;water&nbsp;level,&nbsp;but&nbsp;still&nbsp;walking<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">type&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">MUT_WATER</span><span style="color: #007700">;<br />&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">p&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">ctrl</span><span style="color: #007700">.</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">y&nbsp;</span><span style="color: #007700">-=&nbsp;</span><span style="color: #0000BB">ctrl</span><span style="color: #007700">.</span><span style="color: #0000BB">radius</span><span style="color: #007700">()&nbsp;+&nbsp;</span><span style="color: #0000BB">0.05</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">y&nbsp;</span><span style="color: #007700">&lt;&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">hmHeight</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">xz</span><span style="color: #007700">(),&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;get&nbsp;material&nbsp;from&nbsp;the&nbsp;terrain&nbsp;we're&nbsp;walking&nbsp;on<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">type&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">hmMaterial</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">xz</span><span style="color: #007700">())-&gt;</span><span style="color: #0000BB">user_type</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;char&nbsp;is&nbsp;somewhere&nbsp;above&nbsp;terrain,&nbsp;but&nbsp;walking<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;so&nbsp;check&nbsp;for&nbsp;object&nbsp;right&nbsp;below&nbsp;character<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Int&nbsp;type&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">MUT_VOID</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">Area&nbsp;</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">area&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">areaActive</span><span style="color: #007700">(</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">worldToArea</span><span style="color: #007700">(</span><span style="color: #0000BB">pos</span><span style="color: #007700">().</span><span style="color: #0000BB">xz</span><span style="color: #007700">()));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">area&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">REPA</span><span style="color: #007700">(</span><span style="color: #0000BB">area</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">data</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">embed_objs</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Cuts</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">area</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">data</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">embed_objs</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">shape</span><span style="color: #007700">(</span><span style="color: #0000BB">false</span><span style="color: #007700">)))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;</span><span style="color: #0000BB">MeshPtr&nbsp;m&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">area</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">data</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">embed_objs</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">mesh</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">REPAD</span><span style="color: #007700">(</span><span style="color: #0000BB">j</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">m</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parts</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">Equal</span><span style="color: #007700">(</span><span style="color: #0000BB">m</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parts</span><span style="color: #007700">[</span><span style="color: #0000BB">j</span><span style="color: #007700">].</span><span style="color: #0000BB">name</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"material"</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">type&nbsp;</span><span style="color: #007700">=&nbsp;&nbsp;</span><span style="color: #0000BB">m</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parts</span><span style="color: #007700">[</span><span style="color: #0000BB">j</span><span style="color: #007700">].</span><span style="color: #0000BB">material</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">user_type</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;switch(</span><span style="color: #0000BB">type</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_WATER</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsWater</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">7</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_STONE</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_ROAD</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsStone</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">5</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_PLANT</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsGrass</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">5</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_METAL</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsMetal</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">4</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_WOOD</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsWood</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">4</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_SNOW</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_ICE</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsSnow</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">5</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_VOID</span><span style="color: #007700">:&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsWoodland</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">8</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />}&nbsp;<br /></span></code></div></div></div>
]]></description>
			<content:encoded><![CDATA[Hello agian.<br />
<br />
I'm working on footsteps now. Basically I play a sound file when animateStepOccured is called, so that part is easy. But to decide on the type of sound, i look at the material below the user. Also very easy: <br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">hmMaterial</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">xz</span><span style="color: #007700">())-&gt;</span><span style="color: #0000BB">user_type</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>
<br />
I even found some code to play a different sound when the character walks through shallow water.<br />
<br />
But what I cannot find out: if the character walks on an object, like a bridge or a wall, how to find out the material type? <br />
<br />
That kind of objects is typically embedded in the terrain. Having custom classes for every building, bridge and other object just because I want to know what kind of footstep to play doesn't seem like the right solution. On the other hand, playing a 'wooden' footstep if on a bridge and a more 'soggy' one when walking below it seems not too far fetched, or does it?<br />
<br />
So far i tried:<br />
1. doing a physics ray below the character. But I don't get the objects that are imbedded with the terrain, is that correct?<br />
2. Going through all embedded objects in the current Area and see if there is a Cuts(posBelowActor, embeddedObjectShape). I never get a hit though. I tried the same with terrain_objs instead of embed_objs, but still no hits.<br />
<br />
I have included the code for 2. below, for reference. Still, I'd think an easy method to find out the material you walk on, even if it is a terrain object, could be useful for about any game. I hope i've just overlooked something.<br />
<br />
Regards,<br />
<br />
yvan<br />
<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">void&nbsp;character</span><span style="color: #007700">::</span><span style="color: #0000BB">character</span><span style="color: #007700">::</span><span style="color: #0000BB">animateStepOccured</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Vec&nbsp;p&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">pos</span><span style="color: #007700">();<br />&nbsp;&nbsp;</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">y&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">hmHeight</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">xz</span><span style="color: #007700">());<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Int&nbsp;type&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">MUT_DEFAULT</span><span style="color: #007700">;<br />&nbsp;&nbsp;if(</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">waterUnder</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;this&nbsp;means&nbsp;we're&nbsp;just&nbsp;below&nbsp;water&nbsp;level,&nbsp;but&nbsp;still&nbsp;walking<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">type&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">MUT_WATER</span><span style="color: #007700">;<br />&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">p&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">ctrl</span><span style="color: #007700">.</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">y&nbsp;</span><span style="color: #007700">-=&nbsp;</span><span style="color: #0000BB">ctrl</span><span style="color: #007700">.</span><span style="color: #0000BB">radius</span><span style="color: #007700">()&nbsp;+&nbsp;</span><span style="color: #0000BB">0.05</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">y&nbsp;</span><span style="color: #007700">&lt;&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">hmHeight</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">xz</span><span style="color: #007700">(),&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;get&nbsp;material&nbsp;from&nbsp;the&nbsp;terrain&nbsp;we're&nbsp;walking&nbsp;on<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">type&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">hmMaterial</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">.</span><span style="color: #0000BB">xz</span><span style="color: #007700">())-&gt;</span><span style="color: #0000BB">user_type</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;char&nbsp;is&nbsp;somewhere&nbsp;above&nbsp;terrain,&nbsp;but&nbsp;walking<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;so&nbsp;check&nbsp;for&nbsp;object&nbsp;right&nbsp;below&nbsp;character<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Int&nbsp;type&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">MUT_VOID</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">Area&nbsp;</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">area&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">areaActive</span><span style="color: #007700">(</span><span style="color: #0000BB">Game</span><span style="color: #007700">::</span><span style="color: #0000BB">World</span><span style="color: #007700">.</span><span style="color: #0000BB">worldToArea</span><span style="color: #007700">(</span><span style="color: #0000BB">pos</span><span style="color: #007700">().</span><span style="color: #0000BB">xz</span><span style="color: #007700">()));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">area&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">REPA</span><span style="color: #007700">(</span><span style="color: #0000BB">area</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">data</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">embed_objs</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Cuts</span><span style="color: #007700">(</span><span style="color: #0000BB">p</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">area</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">data</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">embed_objs</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">shape</span><span style="color: #007700">(</span><span style="color: #0000BB">false</span><span style="color: #007700">)))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;</span><span style="color: #0000BB">MeshPtr&nbsp;m&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">area</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">data</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">embed_objs</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">mesh</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">REPAD</span><span style="color: #007700">(</span><span style="color: #0000BB">j</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">m</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parts</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">Equal</span><span style="color: #007700">(</span><span style="color: #0000BB">m</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parts</span><span style="color: #007700">[</span><span style="color: #0000BB">j</span><span style="color: #007700">].</span><span style="color: #0000BB">name</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"material"</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">type&nbsp;</span><span style="color: #007700">=&nbsp;&nbsp;</span><span style="color: #0000BB">m</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parts</span><span style="color: #007700">[</span><span style="color: #0000BB">j</span><span style="color: #007700">].</span><span style="color: #0000BB">material</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">user_type</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;switch(</span><span style="color: #0000BB">type</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_WATER</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsWater</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">7</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_STONE</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_ROAD</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsStone</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">5</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_PLANT</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsGrass</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">5</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_METAL</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsMetal</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">4</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_WOOD</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsWood</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">4</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_SNOW</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_ICE</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsSnow</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">5</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">MUT_VOID</span><span style="color: #007700">:&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">_stepsWoodland</span><span style="color: #007700">[</span><span style="color: #0000BB">Random</span><span style="color: #007700">(</span><span style="color: #0000BB">8</span><span style="color: #007700">)].</span><span style="color: #0000BB">play</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">YSEVec</span><span style="color: #007700">(</span><span style="color: #0000BB">T</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">())).</span><span style="color: #0000BB">speed</span><span style="color: #007700">(</span><span style="color: #0000BB">RandomF</span><span style="color: #007700">(</span><span style="color: #0000BB">0.95</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1.05</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />}&nbsp;<br /></span></code></div></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Game Object classes Source Code in ES]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=6715</link>
			<pubDate>Thu, 08 Aug 2013 07:04:37 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=6715</guid>
			<description><![CDATA[I was wondering if Greg or any other kind soul could possible upload the Game Object classes source in Esenthel Script format (or just plain text, but ES text). I got into the bad habit of only working with Esenthel and since I never actually did know a lot of objective C++ I have a hard time understanding what's going on there.<br />
<br />
So could you please be so kind and offer those codes in es also? It should be easy, and it's not like I'm asking for something we don't already have. It would just save me lots of hours of trying to understand what's going on there.]]></description>
			<content:encoded><![CDATA[I was wondering if Greg or any other kind soul could possible upload the Game Object classes source in Esenthel Script format (or just plain text, but ES text). I got into the bad habit of only working with Esenthel and since I never actually did know a lot of objective C++ I have a hard time understanding what's going on there.<br />
<br />
So could you please be so kind and offer those codes in es also? It should be easy, and it's not like I'm asking for something we don't already have. It would just save me lots of hours of trying to understand what's going on there.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA['Const' objects and savings]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=6681</link>
			<pubDate>Fri, 26 Jul 2013 10:24:27 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=6681</guid>
			<description><![CDATA[Hi Esenthel and Community,<br />
<br />
i think there is some problem in the saving of the 'const' objects. when placed the 'const' objects directly in the map EE doesn't save them as expected. But when i create the 'const' objects it does gets saved. <br />
<br />
i found out, when creating objects dynamically, the const=true parameter gets replaced right after calling the Game::Chr create() function.<br />
<br />
is this some kind of fault or maybe i'm doing something wrong.<br />
<br />
thanks,]]></description>
			<content:encoded><![CDATA[Hi Esenthel and Community,<br />
<br />
i think there is some problem in the saving of the 'const' objects. when placed the 'const' objects directly in the map EE doesn't save them as expected. But when i create the 'const' objects it does gets saved. <br />
<br />
i found out, when creating objects dynamically, the const=true parameter gets replaced right after calling the Game::Chr create() function.<br />
<br />
is this some kind of fault or maybe i'm doing something wrong.<br />
<br />
thanks,]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[FontDefault.load()]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=6623</link>
			<pubDate>Wed, 03 Jul 2013 21:45:38 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=6623</guid>
			<description><![CDATA[So i think im having one of those days, however how does one pass a Font UID to load, when .load() expects a string?<br />
<br />
-J<br />
<hr />
LOL figured it out, COPY then Ctrl+V the FileID<br />
<br />
-J]]></description>
			<content:encoded><![CDATA[So i think im having one of those days, however how does one pass a Font UID to load, when .load() expects a string?<br />
<br />
-J<br />
<hr />
LOL figured it out, COPY then Ctrl+V the FileID<br />
<br />
-J]]></content:encoded>
		</item>
	</channel>
</rss>