<?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 - Physics]]></title>
		<link>https://esenthel.com/forum/</link>
		<description><![CDATA[Esenthel Forum - https://esenthel.com/forum]]></description>
		<pubDate>Wed, 29 Apr 2026 11:41:56 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[CONTACT_KEEP not working]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=11764</link>
			<pubDate>Mon, 17 Feb 2025 07:27:29 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=11764</guid>
			<description><![CDATA[Posted it in discord. CONTACT_KEEP doesn't trigger.]]></description>
			<content:encoded><![CDATA[Posted it in discord. CONTACT_KEEP doesn't trigger.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problem with friction]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=11468</link>
			<pubDate>Tue, 17 Oct 2023 19:38:04 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=11468</guid>
			<description><![CDATA[I'm trying to make a character controller, but for some reason the actor always gets stuck on the terrain like the friction is very high. I tried disabling all the friction on the character actor, disabling gravity, but the problem is the same. When the actor is in the air, it controls as expected, but the moment it touches ground, it completely stops, except for tiny motion when moving downhill.<br />
<br />
How to fix this problem?<br />
<br />
For the controller I'm using the code from the tutorial:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Physics.startSimulation().stopSimulation();<br />
<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; Flt s=3;<br />
&nbsp;&nbsp; Vec vel(0, 0, 0);<br />
&nbsp;&nbsp; if(Kb.b(KB_W))vel+=!PointOnPlane(Cam.matrix.z, Vec(0, 1, 0))*s;<br />
&nbsp;&nbsp; if(Kb.b(KB_S))vel-=!PointOnPlane(Cam.matrix.z, Vec(0, 1, 0))*s;<br />
&nbsp;&nbsp; if(Kb.b(KB_A))vel-=!PointOnPlane(Cam.matrix.x, Vec(0, 1, 0))*s;<br />
&nbsp;&nbsp; if(Kb.b(KB_D))vel+=!PointOnPlane(Cam.matrix.x, Vec(0, 1, 0))*s;<br />
&nbsp;&nbsp; ctrl.update(vel, Kb.shift(), Kb.bp(KB_SPACE) ? 3.5 : 0);</code></div></div>
]]></description>
			<content:encoded><![CDATA[I'm trying to make a character controller, but for some reason the actor always gets stuck on the terrain like the friction is very high. I tried disabling all the friction on the character actor, disabling gravity, but the problem is the same. When the actor is in the air, it controls as expected, but the moment it touches ground, it completely stops, except for tiny motion when moving downhill.<br />
<br />
How to fix this problem?<br />
<br />
For the controller I'm using the code from the tutorial:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Physics.startSimulation().stopSimulation();<br />
<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; Flt s=3;<br />
&nbsp;&nbsp; Vec vel(0, 0, 0);<br />
&nbsp;&nbsp; if(Kb.b(KB_W))vel+=!PointOnPlane(Cam.matrix.z, Vec(0, 1, 0))*s;<br />
&nbsp;&nbsp; if(Kb.b(KB_S))vel-=!PointOnPlane(Cam.matrix.z, Vec(0, 1, 0))*s;<br />
&nbsp;&nbsp; if(Kb.b(KB_A))vel-=!PointOnPlane(Cam.matrix.x, Vec(0, 1, 0))*s;<br />
&nbsp;&nbsp; if(Kb.b(KB_D))vel+=!PointOnPlane(Cam.matrix.x, Vec(0, 1, 0))*s;<br />
&nbsp;&nbsp; ctrl.update(vel, Kb.shift(), Kb.bp(KB_SPACE) ? 3.5 : 0);</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Low FPS affected tick rate and physics went weird.]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=10569</link>
			<pubDate>Mon, 07 Feb 2022 14:45:17 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=10569</guid>
			<description><![CDATA[Hi there.<br />
The game my team developing has a weird issue. When FPS went too low, the tick rate drop and physics went weird.<br />
Is there any way to make tick rate not depend on FPS?]]></description>
			<content:encoded><![CDATA[Hi there.<br />
The game my team developing has a weird issue. When FPS went too low, the tick rate drop and physics went weird.<br />
Is there any way to make tick rate not depend on FPS?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Physics stuttering...]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=10446</link>
			<pubDate>Sat, 21 Aug 2021 18:54:01 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=10446</guid>
			<description><![CDATA[When moving an object via actor.force/impulse/torque etc<br />
I get some regular "stuttering" when running the project.<br />
<br />
It looks like the mesh and the actor matrix get out of sync or something<br />
but I don't know if that's really the problem and how to fix this.<br />
<br />
I can remember I had this problem in some other engine some time ago too,<br />
but I have no clue how to approach this problem.<br />
<br />
Basically, a ball moves smoothly for a second or two, then it has a short "hickup" and<br />
starts to stutter for maybe not even half a second, then smooth movement again, etc.<br />
<br />
Any idea what that might be?<br />
<br />
Thanks,<br />
tL.<br />
<br />
<br />
<br />
The rough code looks something like this, maybe I did something wrong here?:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>void RBall::create(Object &amp;obj)<br />
{<br />
&nbsp;&nbsp; scale = obj.scale3();<br />
&nbsp;&nbsp; mesh = obj.mesh();<br />
&nbsp;&nbsp; phys = obj.phys();<br />
&nbsp;&nbsp; _matrix = obj.matrixFinal().normalize();<br />
&nbsp;&nbsp; _scaledMatrix = _matrix;<br />
&nbsp;&nbsp; _scaledMatrix.scaleOrnL(scale);<br />
&nbsp;&nbsp;<br />
 if(phys)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;actor.create(*phys, 1, true).matrix(_matrix);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;actor.obj(this);<br />
&nbsp;&nbsp; }<br />
}<br />
<br />
<br />
Bool Ball::update()<br />
{<br />
&nbsp;&nbsp; if(Kb.b(KB_W)) actor.addTorque(Vec(-speed, 0, 0));<br />
&nbsp;&nbsp; if(Kb.b(KB_S)) actor.addTorque(Vec(speed, 0, 0));<br />
&nbsp;&nbsp; if(Kb.b(KB_A)) actor.addTorque(Vec(0, 0, speed));<br />
&nbsp;&nbsp; if(Kb.b(KB_D)) actor.addTorque(Vec(0, 0, -speed));&nbsp;&nbsp; <br />
&nbsp;&nbsp; T.pos(actor.matrix().pos); <br />
return 1;<br />
<br />
// T.pos --&gt; virtual void pos (C Vec &amp;pos) {_matrix.pos = pos; _scaledMatrix.pos = pos;} //<br />
&nbsp;&nbsp; <br />
}<br />
<br />
UInt Ball::drawPrepare()<br />
{<br />
&nbsp;&nbsp; actor.draw();<br />
&nbsp;&nbsp; if(mesh) mesh-&gt;draw(actor.matrix());&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; return 1;<br />
}<br />
<br />
void RBall::drawShadow()<br />
{<br />
&nbsp;&nbsp; if(mesh) mesh-&gt;drawShadow(actor.matrix());<br />
}</code></div></div>
<br />
<br />
<br />
<hr />
EDIT:<br />
Ok, just tested some more things.<br />
<br />
<br />
The stutter jitter happens when Physics.stepTime / Physics.updatedTime<br />
change from 0.017 to 0.016 on PHYS_TIMESTEP_ROUND which otherwise has a constant value of 0.017 when logged.<br />
<br />
The problem gets much better when I use PHYS_TIMESTEP_VARIABLE,<br />
which constantly changes between 0.017 and 0.016 but I still get these stutters.<br />
But by far not so often/regularly.<br />
<br />
Is there anything else I could try?]]></description>
			<content:encoded><![CDATA[When moving an object via actor.force/impulse/torque etc<br />
I get some regular "stuttering" when running the project.<br />
<br />
It looks like the mesh and the actor matrix get out of sync or something<br />
but I don't know if that's really the problem and how to fix this.<br />
<br />
I can remember I had this problem in some other engine some time ago too,<br />
but I have no clue how to approach this problem.<br />
<br />
Basically, a ball moves smoothly for a second or two, then it has a short "hickup" and<br />
starts to stutter for maybe not even half a second, then smooth movement again, etc.<br />
<br />
Any idea what that might be?<br />
<br />
Thanks,<br />
tL.<br />
<br />
<br />
<br />
The rough code looks something like this, maybe I did something wrong here?:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>void RBall::create(Object &amp;obj)<br />
{<br />
&nbsp;&nbsp; scale = obj.scale3();<br />
&nbsp;&nbsp; mesh = obj.mesh();<br />
&nbsp;&nbsp; phys = obj.phys();<br />
&nbsp;&nbsp; _matrix = obj.matrixFinal().normalize();<br />
&nbsp;&nbsp; _scaledMatrix = _matrix;<br />
&nbsp;&nbsp; _scaledMatrix.scaleOrnL(scale);<br />
&nbsp;&nbsp;<br />
 if(phys)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;actor.create(*phys, 1, true).matrix(_matrix);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;actor.obj(this);<br />
&nbsp;&nbsp; }<br />
}<br />
<br />
<br />
Bool Ball::update()<br />
{<br />
&nbsp;&nbsp; if(Kb.b(KB_W)) actor.addTorque(Vec(-speed, 0, 0));<br />
&nbsp;&nbsp; if(Kb.b(KB_S)) actor.addTorque(Vec(speed, 0, 0));<br />
&nbsp;&nbsp; if(Kb.b(KB_A)) actor.addTorque(Vec(0, 0, speed));<br />
&nbsp;&nbsp; if(Kb.b(KB_D)) actor.addTorque(Vec(0, 0, -speed));&nbsp;&nbsp; <br />
&nbsp;&nbsp; T.pos(actor.matrix().pos); <br />
return 1;<br />
<br />
// T.pos --&gt; virtual void pos (C Vec &amp;pos) {_matrix.pos = pos; _scaledMatrix.pos = pos;} //<br />
&nbsp;&nbsp; <br />
}<br />
<br />
UInt Ball::drawPrepare()<br />
{<br />
&nbsp;&nbsp; actor.draw();<br />
&nbsp;&nbsp; if(mesh) mesh-&gt;draw(actor.matrix());&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; return 1;<br />
}<br />
<br />
void RBall::drawShadow()<br />
{<br />
&nbsp;&nbsp; if(mesh) mesh-&gt;drawShadow(actor.matrix());<br />
}</code></div></div>
<br />
<br />
<br />
<hr />
EDIT:<br />
Ok, just tested some more things.<br />
<br />
<br />
The stutter jitter happens when Physics.stepTime / Physics.updatedTime<br />
change from 0.017 to 0.016 on PHYS_TIMESTEP_ROUND which otherwise has a constant value of 0.017 when logged.<br />
<br />
The problem gets much better when I use PHYS_TIMESTEP_VARIABLE,<br />
which constantly changes between 0.017 and 0.016 but I still get these stutters.<br />
But by far not so often/regularly.<br />
<br />
Is there anything else I could try?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Ragdoll and custom skeleton - drawing]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9908</link>
			<pubDate>Tue, 03 Mar 2020 21:57:55 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9908</guid>
			<description><![CDATA[I'm playing with Inventory tutorial. I created an item with custom skeleton and ragdoll enabled. I added AnimatedSkeleton and Ragdoll members to extended Game.Item class and created them based on the data from obj file.<br />
<br />
In <span style="font-style: italic;">update</span> method I call <span style="font-style: italic;">ragdoll.toSkel(skel)</span> method and in draw I call<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>if(mesh)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;SetVariation(mesh_variation); mesh-&gt;draw(skel);<br />
&nbsp;&nbsp;&nbsp;&nbsp;SetVariation();<br />
}</code></div></div>
<br />
Even without Frustum Culling. The same applies for the shadows. For debuging purposes I'm drawing skeleton and ragdoll, which behaves as expected - ragdoll is working. But the mesh is drawn like there was no skeleton nor ragdoll unless I'm close to the object around 1 meter far. <br />
<br />
Am I doing something wrong? I was checking sources for Character class and I haven't found anything special.]]></description>
			<content:encoded><![CDATA[I'm playing with Inventory tutorial. I created an item with custom skeleton and ragdoll enabled. I added AnimatedSkeleton and Ragdoll members to extended Game.Item class and created them based on the data from obj file.<br />
<br />
In <span style="font-style: italic;">update</span> method I call <span style="font-style: italic;">ragdoll.toSkel(skel)</span> method and in draw I call<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>if(mesh)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;SetVariation(mesh_variation); mesh-&gt;draw(skel);<br />
&nbsp;&nbsp;&nbsp;&nbsp;SetVariation();<br />
}</code></div></div>
<br />
Even without Frustum Culling. The same applies for the shadows. For debuging purposes I'm drawing skeleton and ragdoll, which behaves as expected - ragdoll is working. But the mesh is drawn like there was no skeleton nor ragdoll unless I'm close to the object around 1 meter far. <br />
<br />
Am I doing something wrong? I was checking sources for Character class and I haven't found anything special.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Crazy ragdoll]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9887</link>
			<pubDate>Sat, 15 Feb 2020 19:57:48 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9887</guid>
			<description><![CDATA[Is it normal that ragdolls are so crazy in current version of Engine? I remember in the past they were more stable.<br />
<br />
Attached <a href="https://ibb.co/thtL75k" target="_blank">gif</a> is created from Game Basics/Ragdoll tutorial. I only added dot which shows character position.<br />
<br />
By the way skel.pos() seems to return the same position even if I set root bone to Warrior skeleton. Is it a bug or my bad understanding?]]></description>
			<content:encoded><![CDATA[Is it normal that ragdolls are so crazy in current version of Engine? I remember in the past they were more stable.<br />
<br />
Attached <a href="https://ibb.co/thtL75k" target="_blank">gif</a> is created from Game Basics/Ragdoll tutorial. I only added dot which shows character position.<br />
<br />
By the way skel.pos() seems to return the same position even if I set root bone to Warrior skeleton. Is it a bug or my bad understanding?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Weird issues with Physics]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9844</link>
			<pubDate>Mon, 20 Jan 2020 22:04:07 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9844</guid>
			<description><![CDATA[Hi,<br />
<br />
I imported my old project to the latest EE version using custom build of Editor. When I build my project most of the Physics related stuff works wrong including:<br />
Physics.ray (looks like it hits wrong objects), Physics.move, Game::Obj.Door (shaking, stucking). Tutorials seems working fine. I load Physics in regular way without any extra customizations.<br />
<br />
I wonder what can be wrong. Should I recreate physic objects? They are correctly displayed in the Editor. Simple collision with objects are also fine.<br />
<br />
Any ideas?<br />
<br />
P.S. I have also another, material and frustum culling issues when running compiled application. I don't observe this issues in Editor. I tried to comment as much code as possible but without luck.]]></description>
			<content:encoded><![CDATA[Hi,<br />
<br />
I imported my old project to the latest EE version using custom build of Editor. When I build my project most of the Physics related stuff works wrong including:<br />
Physics.ray (looks like it hits wrong objects), Physics.move, Game::Obj.Door (shaking, stucking). Tutorials seems working fine. I load Physics in regular way without any extra customizations.<br />
<br />
I wonder what can be wrong. Should I recreate physic objects? They are correctly displayed in the Editor. Simple collision with objects are also fine.<br />
<br />
Any ideas?<br />
<br />
P.S. I have also another, material and frustum culling issues when running compiled application. I don't observe this issues in Editor. I tried to comment as much code as possible but without luck.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[SOLVED] No collision]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9506</link>
			<pubDate>Thu, 09 May 2019 21:04:33 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9506</guid>
			<description><![CDATA[Hi Greg,<br />
<br />
This bug is related to this my thread and starts occur in the same time: <a href="https://esenthel.com/forum/showthread.php?tid=9474" target="_blank">https://esenthel.com/forum/showthread.php?tid=9474</a><br />
<br />
I checked everything on my side and found how to reproduce this bug.<br />
Just download sample project and there is everything described.<br />
<br />
In short:<br />
If set actor.collision(false) in Obj::create function and try set actor.collision(true) in game loop, collision isnt occurs.<br />
<br />
Your solution (Esenthel said):<br />
<blockquote><cite>Quote:</cite>One workaround is to call Physics.stopSimulation(); after Game.World.update(); </blockquote>
<br />
Dosn't work in this case.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".jpg" />&nbsp;&nbsp;<a href="attachment.php?aid=3059" target="_blank">physicsbug.jpg</a> (Size: 49.83 KB / Downloads: 116)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/zip.gif" border="0" alt=".7z" />&nbsp;&nbsp;<a href="attachment.php?aid=3062" target="_blank">BugPhysicsCollision.7z</a> (Size: 16.14 KB / Downloads: 1)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Hi Greg,<br />
<br />
This bug is related to this my thread and starts occur in the same time: <a href="https://esenthel.com/forum/showthread.php?tid=9474" target="_blank">https://esenthel.com/forum/showthread.php?tid=9474</a><br />
<br />
I checked everything on my side and found how to reproduce this bug.<br />
Just download sample project and there is everything described.<br />
<br />
In short:<br />
If set actor.collision(false) in Obj::create function and try set actor.collision(true) in game loop, collision isnt occurs.<br />
<br />
Your solution (Esenthel said):<br />
<blockquote><cite>Quote:</cite>One workaround is to call Physics.stopSimulation(); after Game.World.update(); </blockquote>
<br />
Dosn't work in this case.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".jpg" />&nbsp;&nbsp;<a href="attachment.php?aid=3059" target="_blank">physicsbug.jpg</a> (Size: 49.83 KB / Downloads: 116)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/zip.gif" border="0" alt=".7z" />&nbsp;&nbsp;<a href="attachment.php?aid=3062" target="_blank">BugPhysicsCollision.7z</a> (Size: 16.14 KB / Downloads: 1)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[BUG]freezePos not working]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9474</link>
			<pubDate>Mon, 25 Feb 2019 00:39:57 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9474</guid>
			<description><![CDATA[Good evening,<br />
<br />
freezePosX, freezePosZ, freezePosY not working in "world mode". Its strange, because all is fine without world creation.<br />
<br />
Sample to reproduce in attachment. <br />
<br />
<span style="font-weight: bold;">Code/Main</span><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">ObjMap</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">Player</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Players</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">void&nbsp;InitPre</span><span style="color: #007700">()<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">EE_INIT</span><span style="color: #007700">();<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">mode</span><span style="color: #007700">(</span><span style="color: #0000BB">1280</span><span style="color: #007700">,</span><span style="color: #0000BB">720</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">sync</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">viewRange</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">viewFrom</span><span style="color: #007700">(</span><span style="color: #0000BB">0.45</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">shadowMode</span><span style="color: #007700">(</span><span style="color: #0000BB">SHADOW_NONE</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">viewFov</span><span style="color: #007700">(</span><span style="color: #0000BB">DegToRad</span><span style="color: #007700">(</span><span style="color: #0000BB">45</span><span style="color: #007700">));&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Renderer</span><span style="color: #007700">.</span><span style="color: #0000BB">type</span><span style="color: #007700">(</span><span style="color: #0000BB">RT_SIMPLE</span><span style="color: #007700">).</span><span style="color: #0000BB">clear_color&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Color</span><span style="color: #007700">(</span><span style="color: #0000BB">70</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">130</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">255</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">255</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;<br />}<br /><br /></span><span style="color: #0000BB">Bool&nbsp;Init</span><span style="color: #007700">()<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;physics&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Physics</span><span style="color: #007700">.</span><span style="color: #0000BB">create&nbsp;&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">EE_PHYSX_DLL_PATH</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CSS_NONE</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Physics</span><span style="color: #007700">.</span><span style="color: #0000BB">gravity</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,-</span><span style="color: #0000BB">10.0</span><span style="color: #007700">,</span><span style="color: #0000BB">0</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Physics</span><span style="color: #007700">.</span><span style="color: #0000BB">timestep</span><span style="color: #007700">(</span><span style="color: #0000BB">PHYS_TIMESTEP_NUM</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Physics</span><span style="color: #007700">.</span><span style="color: #0000BB">precision</span><span style="color: #007700">(</span><span style="color: #0000BB">60</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;world&nbsp;&nbsp;<br />&nbsp;&nbsp;&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">setObjType</span><span style="color: #007700">(</span><span style="color: #0000BB">Players</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">OBJ_PLAYER</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">.</span><span style="color: #0000BB">World</span><span style="color: #007700">.New(</span><span style="color: #0000BB">UID</span><span style="color: #007700">(</span><span style="color: #0000BB">3323205672</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1130099143</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1429786773</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">618650229</span><span style="color: #007700">));&nbsp;</span><span style="color: #FF8000">//&nbsp;create&nbsp;the&nbsp;world&nbsp;by&nbsp;giving&nbsp;path&nbsp;to&nbsp;world<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">void&nbsp;Shut</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&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">del</span><span style="color: #007700">();&nbsp;<br />}<br /></span><span style="color: #FF8000">/******************************************************************************/<br /></span><span style="color: #0000BB">Bool&nbsp;Update</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;inputs<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">bp</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_ESC</span><span style="color: #007700">))return&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;actor&nbsp;movement<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_LEFT&nbsp;</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">addVel</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">0.2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_RIGHT</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">addVel</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(-</span><span style="color: #0000BB">0.2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">));&nbsp;<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_UP&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">addVel</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0.2</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_DOWN&nbsp;</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">addVel</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,-</span><span style="color: #0000BB">0.2</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_SPACE</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">addVel</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0.5</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">bp</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_X</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosX</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">bp</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_Z</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosZ</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">bp</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_Y</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosY</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Cam</span><span style="color: #007700">.</span><span style="color: #0000BB">transformByMouse</span><span style="color: #007700">(</span><span style="color: #0000BB">10</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CAMH_ZOOM</span><span style="color: #007700">|(</span><span style="color: #0000BB">Ms</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">)?</span><span style="color: #0000BB">CAMH_MOVE</span><span style="color: #007700">:</span><span style="color: #0000BB">CAMH_ROT</span><span style="color: #007700">));<br />&nbsp;&nbsp;&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">update</span><span style="color: #007700">(</span><span style="color: #0000BB">Cam</span><span style="color: #007700">.</span><span style="color: #0000BB">at</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;update&nbsp;the&nbsp;world&nbsp;to&nbsp;given&nbsp;position<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">void&nbsp;Render</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&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">draw</span><span style="color: #007700">();&nbsp;</span><span style="color: #FF8000">//&nbsp;draw&nbsp;world&nbsp;(this&nbsp;is&nbsp;done&nbsp;outside&nbsp;of&nbsp;'switch(Renderer())'&nbsp;because&nbsp;world&nbsp;automatically&nbsp;detects&nbsp;active&nbsp;rendering&nbsp;mode)<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB">void&nbsp;Draw</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Renderer</span><span style="color: #007700">(</span><span style="color: #0000BB">Render</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Physics</span><span style="color: #007700">.</span><span style="color: #0000BB">draw</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;basic&nbsp;debug&nbsp;info<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">TextStyle&nbsp;&nbsp;&nbsp;ts</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">ts</span><span style="color: #007700">.</span><span style="color: #0000BB">align&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Vec2</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">,-</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">ts</span><span style="color: #007700">.</span><span style="color: #0000BB">size&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Vec2</span><span style="color: #007700">(</span><span style="color: #0000BB">0.05</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0.05</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Flt&nbsp;&nbsp;&nbsp;&nbsp;h&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0.04f</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Flt&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0.04f</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Flt&nbsp;&nbsp;&nbsp;&nbsp;px&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;-</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">w</span><span style="color: #007700">()+&nbsp;</span><span style="color: #0000BB">v</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Flt&nbsp;&nbsp;&nbsp;&nbsp;py&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">h</span><span style="color: #007700">();&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Vec2&nbsp;&nbsp;&nbsp;pos</span><span style="color: #007700">(</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"CONTROLS:"</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"X&nbsp;or&nbsp;Z&nbsp;or&nbsp;Y&nbsp;=&nbsp;freeze&nbsp;actor&nbsp;axis&nbsp;X&nbsp;or&nbsp;Z&nbsp;or&nbsp;Y"</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"ARROW&nbsp;LEFT&nbsp;or&nbsp;ARROW&nbsp;RIGHT&nbsp;=&nbsp;move&nbsp;actor&nbsp;X&nbsp;or&nbsp;Z"</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"ACTOR&nbsp;INFO:"</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"actor.freezePosX&nbsp;=&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosX</span><span style="color: #007700">());&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"actor.freezePosZ&nbsp;=&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosZ</span><span style="color: #007700">());&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"actor.freezePosY&nbsp;=&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosY</span><span style="color: #007700">());&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;<br />}<br /></span><span style="color: #FF8000">/******************************************************************************/&nbsp;<br /></span></code></div></div></div>
<br />
<span style="font-weight: bold;">Code/Player Class</span><br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">/********************************************************************************&#8203;***********/<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">Player&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">.</span><span style="color: #0000BB">Obj<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Actor&nbsp;&nbsp;&nbsp;&nbsp;actor</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;void&nbsp;&nbsp;&nbsp;pos&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">C&nbsp;Vec&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">pos&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">){&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">pos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;void&nbsp;&nbsp;&nbsp;matrix&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">C&nbsp;Matrix&nbsp;</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">matrix</span><span style="color: #007700">){&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">matrix</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">);&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;Vec&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(){&nbsp;return&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">matrix</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;Matrix&nbsp;matrix</span><span style="color: #007700">(){&nbsp;return&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">matrix</span><span style="color: #007700">();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;void&nbsp;&nbsp;&nbsp;create&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Object&nbsp;</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">obj_params</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;Bool&nbsp;&nbsp;&nbsp;update&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;UInt&nbsp;&nbsp;&nbsp;drawPrepare</span><span style="color: #007700">(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Player</span><span style="color: #007700">(){}<br />};<br /><br /></span><span style="color: #FF8000">/********************************************************************************&#8203;***********/<br /></span><span style="color: #0000BB">void&nbsp;Player</span><span style="color: #007700">::</span><span style="color: #0000BB">create</span><span style="color: #007700">(</span><span style="color: #0000BB">Object&nbsp;</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">obj_params</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">create&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(*</span><span style="color: #0000BB">obj_params</span><span style="color: #007700">.</span><span style="color: #0000BB">phys</span><span style="color: #007700">()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">matrix&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">obj_params</span><span style="color: #007700">.</span><span style="color: #0000BB">matrixFinal</span><span style="color: #007700">());<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">mass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">5.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">group&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">AG_CONTROLLER</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezeRot</span><span style="color: #007700">(</span><span style="color: #0000BB">true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;<br />}<br /><br /><br /></span><span style="color: #0000BB">Bool&nbsp;Player</span><span style="color: #007700">::</span><span style="color: #0000BB">update</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />}&nbsp;<br />&nbsp;<br /></span><span style="color: #0000BB">UInt&nbsp;Player</span><span style="color: #007700">::</span><span style="color: #0000BB">drawPrepare</span><span style="color: #007700">()<br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;<br /></span></code></div></div></div>
<br /><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/zip.gif" border="0" alt=".7z" />&nbsp;&nbsp;<a href="attachment.php?aid=3046" target="_blank">freezePos.7z</a> (Size: 13.45 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".jpg" />&nbsp;&nbsp;<a href="attachment.php?aid=3049" target="_blank">freeze1.jpg</a> (Size: 48.11 KB / Downloads: 128)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".jpg" />&nbsp;&nbsp;<a href="attachment.php?aid=3050" target="_blank">freeze2.jpg</a> (Size: 66.31 KB / Downloads: 129)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Good evening,<br />
<br />
freezePosX, freezePosZ, freezePosY not working in "world mode". Its strange, because all is fine without world creation.<br />
<br />
Sample to reproduce in attachment. <br />
<br />
<span style="font-weight: bold;">Code/Main</span><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">ObjMap</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">Player</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Players</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">void&nbsp;InitPre</span><span style="color: #007700">()<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">EE_INIT</span><span style="color: #007700">();<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">mode</span><span style="color: #007700">(</span><span style="color: #0000BB">1280</span><span style="color: #007700">,</span><span style="color: #0000BB">720</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">sync</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">viewRange</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">viewFrom</span><span style="color: #007700">(</span><span style="color: #0000BB">0.45</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">shadowMode</span><span style="color: #007700">(</span><span style="color: #0000BB">SHADOW_NONE</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">viewFov</span><span style="color: #007700">(</span><span style="color: #0000BB">DegToRad</span><span style="color: #007700">(</span><span style="color: #0000BB">45</span><span style="color: #007700">));&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Renderer</span><span style="color: #007700">.</span><span style="color: #0000BB">type</span><span style="color: #007700">(</span><span style="color: #0000BB">RT_SIMPLE</span><span style="color: #007700">).</span><span style="color: #0000BB">clear_color&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Color</span><span style="color: #007700">(</span><span style="color: #0000BB">70</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">130</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">255</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">255</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;<br />}<br /><br /></span><span style="color: #0000BB">Bool&nbsp;Init</span><span style="color: #007700">()<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;physics&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Physics</span><span style="color: #007700">.</span><span style="color: #0000BB">create&nbsp;&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">EE_PHYSX_DLL_PATH</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CSS_NONE</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Physics</span><span style="color: #007700">.</span><span style="color: #0000BB">gravity</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,-</span><span style="color: #0000BB">10.0</span><span style="color: #007700">,</span><span style="color: #0000BB">0</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Physics</span><span style="color: #007700">.</span><span style="color: #0000BB">timestep</span><span style="color: #007700">(</span><span style="color: #0000BB">PHYS_TIMESTEP_NUM</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Physics</span><span style="color: #007700">.</span><span style="color: #0000BB">precision</span><span style="color: #007700">(</span><span style="color: #0000BB">60</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;world&nbsp;&nbsp;<br />&nbsp;&nbsp;&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">setObjType</span><span style="color: #007700">(</span><span style="color: #0000BB">Players</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">OBJ_PLAYER</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">.</span><span style="color: #0000BB">World</span><span style="color: #007700">.New(</span><span style="color: #0000BB">UID</span><span style="color: #007700">(</span><span style="color: #0000BB">3323205672</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1130099143</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1429786773</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">618650229</span><span style="color: #007700">));&nbsp;</span><span style="color: #FF8000">//&nbsp;create&nbsp;the&nbsp;world&nbsp;by&nbsp;giving&nbsp;path&nbsp;to&nbsp;world<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">void&nbsp;Shut</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&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">del</span><span style="color: #007700">();&nbsp;<br />}<br /></span><span style="color: #FF8000">/******************************************************************************/<br /></span><span style="color: #0000BB">Bool&nbsp;Update</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;inputs<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">bp</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_ESC</span><span style="color: #007700">))return&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;actor&nbsp;movement<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_LEFT&nbsp;</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">addVel</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">0.2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_RIGHT</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">addVel</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(-</span><span style="color: #0000BB">0.2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">));&nbsp;<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_UP&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">addVel</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0.2</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_DOWN&nbsp;</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">addVel</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,-</span><span style="color: #0000BB">0.2</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_SPACE</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">addVel</span><span style="color: #007700">(</span><span style="color: #0000BB">Vec</span><span style="color: #007700">(&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0.5</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">bp</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_X</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosX</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">bp</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_Z</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosZ</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">Kb</span><span style="color: #007700">.</span><span style="color: #0000BB">bp</span><span style="color: #007700">(</span><span style="color: #0000BB">KB_Y</span><span style="color: #007700">))</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosY</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Cam</span><span style="color: #007700">.</span><span style="color: #0000BB">transformByMouse</span><span style="color: #007700">(</span><span style="color: #0000BB">10</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CAMH_ZOOM</span><span style="color: #007700">|(</span><span style="color: #0000BB">Ms</span><span style="color: #007700">.</span><span style="color: #0000BB">b</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">)?</span><span style="color: #0000BB">CAMH_MOVE</span><span style="color: #007700">:</span><span style="color: #0000BB">CAMH_ROT</span><span style="color: #007700">));<br />&nbsp;&nbsp;&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">update</span><span style="color: #007700">(</span><span style="color: #0000BB">Cam</span><span style="color: #007700">.</span><span style="color: #0000BB">at</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;update&nbsp;the&nbsp;world&nbsp;to&nbsp;given&nbsp;position<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">void&nbsp;Render</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&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">draw</span><span style="color: #007700">();&nbsp;</span><span style="color: #FF8000">//&nbsp;draw&nbsp;world&nbsp;(this&nbsp;is&nbsp;done&nbsp;outside&nbsp;of&nbsp;'switch(Renderer())'&nbsp;because&nbsp;world&nbsp;automatically&nbsp;detects&nbsp;active&nbsp;rendering&nbsp;mode)<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB">void&nbsp;Draw</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Renderer</span><span style="color: #007700">(</span><span style="color: #0000BB">Render</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Physics</span><span style="color: #007700">.</span><span style="color: #0000BB">draw</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;basic&nbsp;debug&nbsp;info<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">TextStyle&nbsp;&nbsp;&nbsp;ts</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">ts</span><span style="color: #007700">.</span><span style="color: #0000BB">align&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Vec2</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">,-</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">ts</span><span style="color: #007700">.</span><span style="color: #0000BB">size&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Vec2</span><span style="color: #007700">(</span><span style="color: #0000BB">0.05</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0.05</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Flt&nbsp;&nbsp;&nbsp;&nbsp;h&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0.04f</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Flt&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0.04f</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Flt&nbsp;&nbsp;&nbsp;&nbsp;px&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;-</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">w</span><span style="color: #007700">()+&nbsp;</span><span style="color: #0000BB">v</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Flt&nbsp;&nbsp;&nbsp;&nbsp;py&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">h</span><span style="color: #007700">();&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Vec2&nbsp;&nbsp;&nbsp;pos</span><span style="color: #007700">(</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"CONTROLS:"</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"X&nbsp;or&nbsp;Z&nbsp;or&nbsp;Y&nbsp;=&nbsp;freeze&nbsp;actor&nbsp;axis&nbsp;X&nbsp;or&nbsp;Z&nbsp;or&nbsp;Y"</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"ARROW&nbsp;LEFT&nbsp;or&nbsp;ARROW&nbsp;RIGHT&nbsp;=&nbsp;move&nbsp;actor&nbsp;X&nbsp;or&nbsp;Z"</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"ACTOR&nbsp;INFO:"</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"actor.freezePosX&nbsp;=&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosX</span><span style="color: #007700">());&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"actor.freezePosZ&nbsp;=&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosZ</span><span style="color: #007700">());&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">D</span><span style="color: #007700">.</span><span style="color: #0000BB">text</span><span style="color: #007700">(</span><span style="color: #0000BB">ts</span><span style="color: #007700">,</span><span style="color: #0000BB">px</span><span style="color: #007700">,</span><span style="color: #0000BB">py</span><span style="color: #007700">,</span><span style="color: #0000BB">S</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"actor.freezePosY&nbsp;=&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">Players</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">].</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezePosY</span><span style="color: #007700">());&nbsp;</span><span style="color: #0000BB">py&nbsp;</span><span style="color: #007700">-=</span><span style="color: #0000BB">h</span><span style="color: #007700">;<br />}<br /></span><span style="color: #FF8000">/******************************************************************************/&nbsp;<br /></span></code></div></div></div>
<br />
<span style="font-weight: bold;">Code/Player Class</span><br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">/********************************************************************************&#8203;***********/<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">Player&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Game</span><span style="color: #007700">.</span><span style="color: #0000BB">Obj<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Actor&nbsp;&nbsp;&nbsp;&nbsp;actor</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;void&nbsp;&nbsp;&nbsp;pos&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">C&nbsp;Vec&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">pos&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">){&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">pos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;void&nbsp;&nbsp;&nbsp;matrix&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">C&nbsp;Matrix&nbsp;</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">matrix</span><span style="color: #007700">){&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">(</span><span style="color: #0000BB">matrix</span><span style="color: #007700">.</span><span style="color: #0000BB">pos</span><span style="color: #007700">);&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;Vec&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(){&nbsp;return&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">matrix</span><span style="color: #007700">().</span><span style="color: #0000BB">pos</span><span style="color: #007700">;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;Matrix&nbsp;matrix</span><span style="color: #007700">(){&nbsp;return&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">matrix</span><span style="color: #007700">();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;void&nbsp;&nbsp;&nbsp;create&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Object&nbsp;</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">obj_params</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;Bool&nbsp;&nbsp;&nbsp;update&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">virtual&nbsp;UInt&nbsp;&nbsp;&nbsp;drawPrepare</span><span style="color: #007700">(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Player</span><span style="color: #007700">(){}<br />};<br /><br /></span><span style="color: #FF8000">/********************************************************************************&#8203;***********/<br /></span><span style="color: #0000BB">void&nbsp;Player</span><span style="color: #007700">::</span><span style="color: #0000BB">create</span><span style="color: #007700">(</span><span style="color: #0000BB">Object&nbsp;</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">obj_params</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">create&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(*</span><span style="color: #0000BB">obj_params</span><span style="color: #007700">.</span><span style="color: #0000BB">phys</span><span style="color: #007700">()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">matrix&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">obj_params</span><span style="color: #007700">.</span><span style="color: #0000BB">matrixFinal</span><span style="color: #007700">());<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">mass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">5.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">group&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">AG_CONTROLLER</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">actor</span><span style="color: #007700">.</span><span style="color: #0000BB">freezeRot</span><span style="color: #007700">(</span><span style="color: #0000BB">true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;<br />}<br /><br /><br /></span><span style="color: #0000BB">Bool&nbsp;Player</span><span style="color: #007700">::</span><span style="color: #0000BB">update</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />}&nbsp;<br />&nbsp;<br /></span><span style="color: #0000BB">UInt&nbsp;Player</span><span style="color: #007700">::</span><span style="color: #0000BB">drawPrepare</span><span style="color: #007700">()<br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;<br /></span></code></div></div></div>
<br /><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/zip.gif" border="0" alt=".7z" />&nbsp;&nbsp;<a href="attachment.php?aid=3046" target="_blank">freezePos.7z</a> (Size: 13.45 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".jpg" />&nbsp;&nbsp;<a href="attachment.php?aid=3049" target="_blank">freeze1.jpg</a> (Size: 48.11 KB / Downloads: 128)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".jpg" />&nbsp;&nbsp;<a href="attachment.php?aid=3050" target="_blank">freeze2.jpg</a> (Size: 66.31 KB / Downloads: 129)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[character actor.addAccel has no effect on web platform]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9302</link>
			<pubDate>Thu, 19 Oct 2017 15:00:19 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9302</guid>
			<description><![CDATA[Hello, i am trying to add gravity for my characters manually and it works as expected in windows build but is not working on web build. It seems that ctrl.actor.addAccel just doesn't do anything. I also tried addForce and addVelocity but they also doesn't do anything in web build. <br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Bool GameInit()<br />
{<br />
&nbsp;&nbsp; Physics.create(EE_PHYSX_DLL_PATH);<br />
&nbsp;&nbsp; Physics.precision(40);<br />
&nbsp;&nbsp; Physics.timestep(PHYS_TIMESTEP_ROUND);<br />
&nbsp;&nbsp; Physics.gravity(Vec(0, -10, 0));<br />
&nbsp;&nbsp; Physics.simulation_step_completed = GameFixedUpdate;<br />
// ... some other code<br />
&nbsp;&nbsp; return true;<br />
}<br />
<br />
void GameFixedUpdate()<br />
{<br />
&nbsp;&nbsp; Flt fixed_delta_t = 1.0f / Physics.precision();<br />
&nbsp;&nbsp; REPA(Players) Players[i].fixed_update(fixed_delta_t);<br />
}<br />
<br />
class Player : Game.Chr<br />
{<br />
&nbsp;&nbsp; virtual void create(Object &amp;obj) override<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.create(obj);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctrl.actor.gravity(false);<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; void fixed_update(Flt delta_t)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JavaScriptRun("console.log('fixed update!');"); // this function is called as expected<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ctrl.onGround())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctrl.actor.addAccel(Vec(0, -20, 0)); // this doesn't work on web<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctrl.actor.addAccel(Vec(0, -12, 0)); // this doesn't work on web<br />
&nbsp;&nbsp; }<br />
// ... other code<br />
}</code></div></div>
]]></description>
			<content:encoded><![CDATA[Hello, i am trying to add gravity for my characters manually and it works as expected in windows build but is not working on web build. It seems that ctrl.actor.addAccel just doesn't do anything. I also tried addForce and addVelocity but they also doesn't do anything in web build. <br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Bool GameInit()<br />
{<br />
&nbsp;&nbsp; Physics.create(EE_PHYSX_DLL_PATH);<br />
&nbsp;&nbsp; Physics.precision(40);<br />
&nbsp;&nbsp; Physics.timestep(PHYS_TIMESTEP_ROUND);<br />
&nbsp;&nbsp; Physics.gravity(Vec(0, -10, 0));<br />
&nbsp;&nbsp; Physics.simulation_step_completed = GameFixedUpdate;<br />
// ... some other code<br />
&nbsp;&nbsp; return true;<br />
}<br />
<br />
void GameFixedUpdate()<br />
{<br />
&nbsp;&nbsp; Flt fixed_delta_t = 1.0f / Physics.precision();<br />
&nbsp;&nbsp; REPA(Players) Players[i].fixed_update(fixed_delta_t);<br />
}<br />
<br />
class Player : Game.Chr<br />
{<br />
&nbsp;&nbsp; virtual void create(Object &amp;obj) override<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.create(obj);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctrl.actor.gravity(false);<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; void fixed_update(Flt delta_t)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JavaScriptRun("console.log('fixed update!');"); // this function is called as expected<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ctrl.onGround())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctrl.actor.addAccel(Vec(0, -20, 0)); // this doesn't work on web<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctrl.actor.addAccel(Vec(0, -12, 0)); // this doesn't work on web<br />
&nbsp;&nbsp; }<br />
// ... other code<br />
}</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[can i add collision in model program then import in esenthel]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9252</link>
			<pubDate>Wed, 28 Jun 2017 17:26:22 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9252</guid>
			<description><![CDATA[can i add collision in model program then import in esenthel i have buildings<br />
with stairs and you can walk arround on the second floor outside the building<br />
but when i do this in esenthel physics and then press on static mesh for collision not everything get collision is it possible in 3d model program and add there the collision then import in esenthel <img src="images/smilies/grin.gif" style="vertical-align: middle;" border="0" alt="grin" title="grin" />]]></description>
			<content:encoded><![CDATA[can i add collision in model program then import in esenthel i have buildings<br />
with stairs and you can walk arround on the second floor outside the building<br />
but when i do this in esenthel physics and then press on static mesh for collision not everything get collision is it possible in 3d model program and add there the collision then import in esenthel <img src="images/smilies/grin.gif" style="vertical-align: middle;" border="0" alt="grin" title="grin" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Actor.sweep, hit a plane]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9198</link>
			<pubDate>Thu, 23 Mar 2017 04:31:50 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9198</guid>
			<description><![CDATA[Hey,<br />
<br />
here is what i try to do:<br />
<br />
Player attacks; if weapon ( like knife ) hit the floor, draw a decal at the location hit.<br />
<br />
Following the game basics - "17 - small overlays" tutorial<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>PhysHit phys_hit;<br />
&nbsp;&nbsp; if(Actor.sweep(Actor.pos(), &amp;phys_hit))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(phys_hit.group==AG_TERRAIN)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Game.World.terrainAddDecal(WHITE, bullet_mtrl_id, Matrix().setPosDir(phys_hit.plane.pos, phys_hit.plane.normal).scaleOrn(0.05));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp; }</code></div></div>
<br />
This code works fine for the collision ( detect at the right time, when touched the floor ) but the issue is the plan pos are at the wrong location.<br />
<br />
attached screenshot : <br />
<br />
<a href="https://gyazo.com/3a5ae6c5b4d5eef5d28a0abac519a8b5" target="_blank">https://gyazo.com/3a5ae6c5b4d5eef5d28a0abac519a8b5</a><br />
<br />
sooo here my questions : is it better to create a fake ray of the lenght of the weapon ?<br />
am i doing something wrong ? or is there another way ?<br />
<br />
thanks]]></description>
			<content:encoded><![CDATA[Hey,<br />
<br />
here is what i try to do:<br />
<br />
Player attacks; if weapon ( like knife ) hit the floor, draw a decal at the location hit.<br />
<br />
Following the game basics - "17 - small overlays" tutorial<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>PhysHit phys_hit;<br />
&nbsp;&nbsp; if(Actor.sweep(Actor.pos(), &amp;phys_hit))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(phys_hit.group==AG_TERRAIN)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Game.World.terrainAddDecal(WHITE, bullet_mtrl_id, Matrix().setPosDir(phys_hit.plane.pos, phys_hit.plane.normal).scaleOrn(0.05));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp; }</code></div></div>
<br />
This code works fine for the collision ( detect at the right time, when touched the floor ) but the issue is the plan pos are at the wrong location.<br />
<br />
attached screenshot : <br />
<br />
<a href="https://gyazo.com/3a5ae6c5b4d5eef5d28a0abac519a8b5" target="_blank">https://gyazo.com/3a5ae6c5b4d5eef5d28a0abac519a8b5</a><br />
<br />
sooo here my questions : is it better to create a fake ray of the lenght of the weapon ?<br />
am i doing something wrong ? or is there another way ?<br />
<br />
thanks]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[SOLVED] Raycast fps independent]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9144</link>
			<pubDate>Mon, 14 Nov 2016 16:07:42 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9144</guid>
			<description><![CDATA[hi all, <br />
i need your help and explanation<br />
<br />
For example: If i want detect collision with some trigger using Raycast, where i should call Physics.ray method for fps independent result?<br />
<br />
If i call it in main update function then Raycast depends on framerate and sometimes collisions are not captured.<br />
<br />
My point is 50 or 60 CPS for physics calculations (1 sec / 50 calc = 0.02 dt), so i need something like <span style="font-weight: bold;">FIXED UPDATE FUNCTION</span> where should be all physics operations which runs independently or inside MAIN UPDATE there should be some loop which calculate physics as much as needed per frame. for example if fps drop from 60 to 30, then physics should be calculated 2 times.<br />
<br />
Is this good direction to reslove this problem? How add to esenthel something like fixed update function for physics calculations?<br />
<br />
This sample app represent situation how raycast recording collisions when fps is 60 and 30 fps. Press SPACE to switch fps between 60 and ~30;<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>/***************************************************/<br />
enum AG_ACTOR_GROUP<br />
{<br />
&nbsp;&nbsp; AG_TRIGGER = 1,<br />
}<br />
/***************************************************/<br />
bool&nbsp;&nbsp;fps_limit&nbsp;&nbsp; = false;<br />
Vec&nbsp;&nbsp; pos_startup = Vec(-7, 0.9, 0);<br />
Vec&nbsp;&nbsp; cam_pos&nbsp;&nbsp;&nbsp;&nbsp; = Vec(0, 3, -5);<br />
<br />
Actor ball,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collider;<br />
<br />
int cycles_60fps = 0;<br />
int cycles_30fps = 0;<br />
<br />
int hit_60fps&nbsp;&nbsp;&nbsp;&nbsp;= 0;<br />
int hit_30fps&nbsp;&nbsp;&nbsp;&nbsp;= 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
bool colliding = false;<br />
bool&nbsp;&nbsp;pause&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
/***************************************************/<br />
void collision()<br />
{<br />
&nbsp;&nbsp; if(pause)return;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; // calculatye physics<br />
&nbsp;&nbsp; Physics.startSimulation().stopSimulation();<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; if(ball.vel().xz().length() &lt; 6.0)ball.vel(ball.vel() + Time.d() * Vec(20.0, 0, 0));&nbsp;&nbsp; // set vel limit to 6.0 and add velocity to actor&nbsp;&nbsp;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; // collision detection<br />
&nbsp;&nbsp; PhysHit ph;<br />
&nbsp;&nbsp; if(Physics.ray(ball.pos(), ball.matrix().y * 2.0, &amp;ph, IndexToFlag(AG_TRIGGER)))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ph.group == AG_TRIGGER)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(fps_limit)hit_30fps++;else hit_60fps++; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!colliding){ if(fps_limit)cycles_30fps++;else cycles_60fps++; } // incrase cycle when raycast leave collider&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colliding = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; }else colliding = false;<br />
<br />
}<br />
/***************************************************/<br />
void InitPre()<br />
{<br />
&nbsp;&nbsp; EE_INIT();<br />
&nbsp;&nbsp; Ms.hide();<br />
&nbsp;&nbsp; Ms.clip(null, 1);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; D.mode(1280, 720, false).sync(true);<br />
}<br />
/***************************************************/<br />
bool Init()<br />
{<br />
&nbsp;&nbsp; // physics<br />
&nbsp;&nbsp; Physics.create&nbsp;&nbsp;(EE_PHYSX_DLL_PATH);<br />
&nbsp;&nbsp; Physics.gravity (Vec(0, -40.0, 0));<br />
&nbsp;&nbsp; Physics.timestep(PHYS_TIMESTEP_NUM);<br />
&nbsp;&nbsp; //Physics.timestep(PHYS_TIMESTEP_ROUND);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; Physics.precision(60);<br />
<br />
&nbsp;&nbsp; //&nbsp;&nbsp;ball actor<br />
&nbsp;&nbsp; ball.create&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Ball(0.4, pos_startup));<br />
&nbsp;&nbsp; ball.freezeRot&nbsp;&nbsp;&nbsp;&nbsp;(true);<br />
&nbsp;&nbsp; ball.freezePosZ&nbsp;&nbsp; (true);<br />
&nbsp;&nbsp; ball.mass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (50);&nbsp;&nbsp; <br />
&nbsp;&nbsp; ball.group&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(AG_CONTROLLER);<br />
&nbsp;&nbsp; ball.freezePosY&nbsp;&nbsp; (true);<br />
<br />
&nbsp;&nbsp; // collider actor<br />
&nbsp;&nbsp; collider.create&nbsp;&nbsp; (Box(1.0, 0.1, 3, Vec(0.0, 2.0, 0)));<br />
&nbsp;&nbsp; collider.kinematic(true);<br />
&nbsp;&nbsp; collider.trigger&nbsp;&nbsp;(true);<br />
&nbsp;&nbsp; collider.group&nbsp;&nbsp;&nbsp;&nbsp;(AG_TRIGGER);<br />
<br />
&nbsp;&nbsp; Physics.ignore(AG_TRIGGER, AG_TERRAIN);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; return true;<br />
}<br />
/***************************************************/<br />
void Shut(){}<br />
/***************************************************/<br />
bool Update()<br />
{<br />
&nbsp;&nbsp; if(fps_limit)Time.wait(1000.0 * 0.032);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; // input<br />
&nbsp;&nbsp; if(Kb.bp(KB_ESC&nbsp;&nbsp;))return false;<br />
&nbsp;&nbsp; if(Kb.bp(KB_P))pause = !pause;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; if(Kb.bp(KB_SPACE))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ball.vel(VecZero); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ball.pos(pos_startup); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fps_limit = !fps_limit;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; if(Kb.bp(KB_R&nbsp;&nbsp;&nbsp;&nbsp;))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cycles_30fps = hit_30fps = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cycles_60fps = hit_60fps = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ball.vel(VecZero); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ball.pos(pos_startup); <br />
&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; // camera<br />
&nbsp;&nbsp; Cam.setAngle(cam_pos, 0.0, -0.4).set();<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp; // physics update<br />
&nbsp;&nbsp; collision();<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; if(ball.pos().x &gt; 7.0)ball.pos(pos_startup);&nbsp;&nbsp;// reset ball if exceed position limit<br />
<br />
&nbsp;&nbsp; return true;<br />
}<br />
/***************************************************/<br />
void Render() <br />
{<br />
&nbsp;&nbsp; Game.World.draw(); <br />
}<br />
/***************************************************/<br />
void Draw()<br />
{<br />
&nbsp;&nbsp; Renderer(Render);<br />
&nbsp;&nbsp; Physics.draw();&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; TextStyle&nbsp;&nbsp; ts;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts.align = Vec2(1,-1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts.size = Vec2(0.05, 0.05);<br />
<br />
&nbsp;&nbsp; Flt&nbsp;&nbsp;&nbsp;&nbsp;h&nbsp;&nbsp; = 0.04f;<br />
&nbsp;&nbsp; Flt&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;&nbsp; = 0.04f;<br />
&nbsp;&nbsp; Flt&nbsp;&nbsp;&nbsp;&nbsp;px&nbsp;&nbsp;= -D.w()+ v;<br />
&nbsp;&nbsp; Flt&nbsp;&nbsp;&nbsp;&nbsp;py&nbsp;&nbsp;= D.h(); py -=h;&nbsp;&nbsp;<br />
&nbsp;&nbsp; Vec2&nbsp;&nbsp; pos(px,py);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp; D.text(ts, px, py,S+ "Press [SPACE] to change FPS limit.&nbsp;&nbsp;&nbsp;&nbsp; FPS: " + Time.fps()); py -=h;&nbsp;&nbsp;<br />
&nbsp;&nbsp; D.text(ts, px, py,S+ "Press [R] to reset statistics."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ); py -=h; <br />
&nbsp;&nbsp; D.text(ts, px, py,S+ "Press [P] to pause."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;); py -=h; py -=h;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; D.text(ts, px, py,S+ "[60FPS] cycle / ray collisions = " + cycles_60fps + " / " + hit_60fps); py -=h;<br />
&nbsp;&nbsp; D.text(ts, px, py,S+ "[30FPS] cycle / ray collisions = " + cycles_30fps + " / " + hit_30fps); py -=h;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp; if(pause)D.text(ts, Vec2(0, -0.5), S+ "PAUSE");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; // draw raycast<br />
&nbsp;&nbsp; SetMatrix();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; D.line(BLUE, ball.pos(), ball.pos() + ball.matrix().y); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
/***************************************************/</code></div></div>
]]></description>
			<content:encoded><![CDATA[hi all, <br />
i need your help and explanation<br />
<br />
For example: If i want detect collision with some trigger using Raycast, where i should call Physics.ray method for fps independent result?<br />
<br />
If i call it in main update function then Raycast depends on framerate and sometimes collisions are not captured.<br />
<br />
My point is 50 or 60 CPS for physics calculations (1 sec / 50 calc = 0.02 dt), so i need something like <span style="font-weight: bold;">FIXED UPDATE FUNCTION</span> where should be all physics operations which runs independently or inside MAIN UPDATE there should be some loop which calculate physics as much as needed per frame. for example if fps drop from 60 to 30, then physics should be calculated 2 times.<br />
<br />
Is this good direction to reslove this problem? How add to esenthel something like fixed update function for physics calculations?<br />
<br />
This sample app represent situation how raycast recording collisions when fps is 60 and 30 fps. Press SPACE to switch fps between 60 and ~30;<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>/***************************************************/<br />
enum AG_ACTOR_GROUP<br />
{<br />
&nbsp;&nbsp; AG_TRIGGER = 1,<br />
}<br />
/***************************************************/<br />
bool&nbsp;&nbsp;fps_limit&nbsp;&nbsp; = false;<br />
Vec&nbsp;&nbsp; pos_startup = Vec(-7, 0.9, 0);<br />
Vec&nbsp;&nbsp; cam_pos&nbsp;&nbsp;&nbsp;&nbsp; = Vec(0, 3, -5);<br />
<br />
Actor ball,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collider;<br />
<br />
int cycles_60fps = 0;<br />
int cycles_30fps = 0;<br />
<br />
int hit_60fps&nbsp;&nbsp;&nbsp;&nbsp;= 0;<br />
int hit_30fps&nbsp;&nbsp;&nbsp;&nbsp;= 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
bool colliding = false;<br />
bool&nbsp;&nbsp;pause&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
/***************************************************/<br />
void collision()<br />
{<br />
&nbsp;&nbsp; if(pause)return;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; // calculatye physics<br />
&nbsp;&nbsp; Physics.startSimulation().stopSimulation();<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; if(ball.vel().xz().length() &lt; 6.0)ball.vel(ball.vel() + Time.d() * Vec(20.0, 0, 0));&nbsp;&nbsp; // set vel limit to 6.0 and add velocity to actor&nbsp;&nbsp;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; // collision detection<br />
&nbsp;&nbsp; PhysHit ph;<br />
&nbsp;&nbsp; if(Physics.ray(ball.pos(), ball.matrix().y * 2.0, &amp;ph, IndexToFlag(AG_TRIGGER)))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ph.group == AG_TRIGGER)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(fps_limit)hit_30fps++;else hit_60fps++; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!colliding){ if(fps_limit)cycles_30fps++;else cycles_60fps++; } // incrase cycle when raycast leave collider&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colliding = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; }else colliding = false;<br />
<br />
}<br />
/***************************************************/<br />
void InitPre()<br />
{<br />
&nbsp;&nbsp; EE_INIT();<br />
&nbsp;&nbsp; Ms.hide();<br />
&nbsp;&nbsp; Ms.clip(null, 1);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; D.mode(1280, 720, false).sync(true);<br />
}<br />
/***************************************************/<br />
bool Init()<br />
{<br />
&nbsp;&nbsp; // physics<br />
&nbsp;&nbsp; Physics.create&nbsp;&nbsp;(EE_PHYSX_DLL_PATH);<br />
&nbsp;&nbsp; Physics.gravity (Vec(0, -40.0, 0));<br />
&nbsp;&nbsp; Physics.timestep(PHYS_TIMESTEP_NUM);<br />
&nbsp;&nbsp; //Physics.timestep(PHYS_TIMESTEP_ROUND);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; Physics.precision(60);<br />
<br />
&nbsp;&nbsp; //&nbsp;&nbsp;ball actor<br />
&nbsp;&nbsp; ball.create&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Ball(0.4, pos_startup));<br />
&nbsp;&nbsp; ball.freezeRot&nbsp;&nbsp;&nbsp;&nbsp;(true);<br />
&nbsp;&nbsp; ball.freezePosZ&nbsp;&nbsp; (true);<br />
&nbsp;&nbsp; ball.mass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (50);&nbsp;&nbsp; <br />
&nbsp;&nbsp; ball.group&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(AG_CONTROLLER);<br />
&nbsp;&nbsp; ball.freezePosY&nbsp;&nbsp; (true);<br />
<br />
&nbsp;&nbsp; // collider actor<br />
&nbsp;&nbsp; collider.create&nbsp;&nbsp; (Box(1.0, 0.1, 3, Vec(0.0, 2.0, 0)));<br />
&nbsp;&nbsp; collider.kinematic(true);<br />
&nbsp;&nbsp; collider.trigger&nbsp;&nbsp;(true);<br />
&nbsp;&nbsp; collider.group&nbsp;&nbsp;&nbsp;&nbsp;(AG_TRIGGER);<br />
<br />
&nbsp;&nbsp; Physics.ignore(AG_TRIGGER, AG_TERRAIN);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; return true;<br />
}<br />
/***************************************************/<br />
void Shut(){}<br />
/***************************************************/<br />
bool Update()<br />
{<br />
&nbsp;&nbsp; if(fps_limit)Time.wait(1000.0 * 0.032);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; // input<br />
&nbsp;&nbsp; if(Kb.bp(KB_ESC&nbsp;&nbsp;))return false;<br />
&nbsp;&nbsp; if(Kb.bp(KB_P))pause = !pause;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; if(Kb.bp(KB_SPACE))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ball.vel(VecZero); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ball.pos(pos_startup); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fps_limit = !fps_limit;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; if(Kb.bp(KB_R&nbsp;&nbsp;&nbsp;&nbsp;))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cycles_30fps = hit_30fps = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cycles_60fps = hit_60fps = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ball.vel(VecZero); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ball.pos(pos_startup); <br />
&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; // camera<br />
&nbsp;&nbsp; Cam.setAngle(cam_pos, 0.0, -0.4).set();<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp; // physics update<br />
&nbsp;&nbsp; collision();<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; if(ball.pos().x &gt; 7.0)ball.pos(pos_startup);&nbsp;&nbsp;// reset ball if exceed position limit<br />
<br />
&nbsp;&nbsp; return true;<br />
}<br />
/***************************************************/<br />
void Render() <br />
{<br />
&nbsp;&nbsp; Game.World.draw(); <br />
}<br />
/***************************************************/<br />
void Draw()<br />
{<br />
&nbsp;&nbsp; Renderer(Render);<br />
&nbsp;&nbsp; Physics.draw();&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; TextStyle&nbsp;&nbsp; ts;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts.align = Vec2(1,-1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts.size = Vec2(0.05, 0.05);<br />
<br />
&nbsp;&nbsp; Flt&nbsp;&nbsp;&nbsp;&nbsp;h&nbsp;&nbsp; = 0.04f;<br />
&nbsp;&nbsp; Flt&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;&nbsp; = 0.04f;<br />
&nbsp;&nbsp; Flt&nbsp;&nbsp;&nbsp;&nbsp;px&nbsp;&nbsp;= -D.w()+ v;<br />
&nbsp;&nbsp; Flt&nbsp;&nbsp;&nbsp;&nbsp;py&nbsp;&nbsp;= D.h(); py -=h;&nbsp;&nbsp;<br />
&nbsp;&nbsp; Vec2&nbsp;&nbsp; pos(px,py);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp; D.text(ts, px, py,S+ "Press [SPACE] to change FPS limit.&nbsp;&nbsp;&nbsp;&nbsp; FPS: " + Time.fps()); py -=h;&nbsp;&nbsp;<br />
&nbsp;&nbsp; D.text(ts, px, py,S+ "Press [R] to reset statistics."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ); py -=h; <br />
&nbsp;&nbsp; D.text(ts, px, py,S+ "Press [P] to pause."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;); py -=h; py -=h;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; D.text(ts, px, py,S+ "[60FPS] cycle / ray collisions = " + cycles_60fps + " / " + hit_60fps); py -=h;<br />
&nbsp;&nbsp; D.text(ts, px, py,S+ "[30FPS] cycle / ray collisions = " + cycles_30fps + " / " + hit_30fps); py -=h;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp; if(pause)D.text(ts, Vec2(0, -0.5), S+ "PAUSE");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; // draw raycast<br />
&nbsp;&nbsp; SetMatrix();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; D.line(BLUE, ball.pos(), ball.pos() + ball.matrix().y); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
/***************************************************/</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problem between framerate and physics]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9035</link>
			<pubDate>Wed, 01 Jun 2016 00:03:03 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9035</guid>
			<description><![CDATA[Hi esenthel!<br />
<br />
we start to implement vehicule in our game but we can have some drop of FPS because map is too big and when we are under 25 fps, the physics of vehicule start to be very strange like this video show:<br />
<br />
ps: you can see the capsule of player bug too at 1:45 min<br />
<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/6RqcxJSHQHk" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed --><br />
<br />
it happens when we draw physics too because it causes a drop of FPS. Any tips ??]]></description>
			<content:encoded><![CDATA[Hi esenthel!<br />
<br />
we start to implement vehicule in our game but we can have some drop of FPS because map is too big and when we are under 25 fps, the physics of vehicule start to be very strange like this video show:<br />
<br />
ps: you can see the capsule of player bug too at 1:45 min<br />
<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/6RqcxJSHQHk" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed --><br />
<br />
it happens when we draw physics too because it causes a drop of FPS. Any tips ??]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[can i make one way collusion?]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9025</link>
			<pubDate>Fri, 20 May 2016 07:43:41 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9025</guid>
			<description><![CDATA[In Object editor.<br />
i want to make one-way traffic, in our game.<br />
i think, if "single-sided collusion (or something like)" is possible, can do so.<br />
<br />
example:<br />
<br />
make a transparence surface (square polygon or model).<br />
and set properties below (if i can).<br />
<br />
faces Front-side... no collusion.<br />
faces Back-side... collusion valid.<br />
<br />
and locate it on the game-field.<br />
<br />
Can EE do this way?]]></description>
			<content:encoded><![CDATA[In Object editor.<br />
i want to make one-way traffic, in our game.<br />
i think, if "single-sided collusion (or something like)" is possible, can do so.<br />
<br />
example:<br />
<br />
make a transparence surface (square polygon or model).<br />
and set properties below (if i can).<br />
<br />
faces Front-side... no collusion.<br />
faces Back-side... collusion valid.<br />
<br />
and locate it on the game-field.<br />
<br />
Can EE do this way?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Jump / Slope Burst Problem]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8934</link>
			<pubDate>Fri, 15 Jan 2016 16:42:14 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8934</guid>
			<description><![CDATA[This is probably old problem, but I don't know what cause these.<br />
<br />
1. When jump rapidly while moving character will often got a speed burst when jumping again.<br />
<br />
2.When moving very fast speed on small slope that is can't be move up normally, character will try to 'climb' and slide back down, but will get a huge speed burst and not snap to the ground if able to climb that slope.<br />
<br />
I create phys without additional PhysMtrl config.<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Physics.create(EE_PHYSX_DLL_PATH).gravity(Vec(0, -9.8, 0));</code></div></div>
<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/_MX3eDe40Zg" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed --><br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>input.jump=Kb.bp(KB_J)*3.5f;</code></div></div>
<br />
However, I can fix first problem adding extra 'onGround' checking though. Did ctrl.update() forget to check for onGround() before jumping? <img src="images/smilies/pfft.gif" style="vertical-align: middle;" border="0" alt="pfft" title="pfft" /><br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>input.jump=Kb.bp(KB_J)*ctrl.onGround()*3.5f;</code></div></div>
<br />
The second problem however, is the main problem<br />
<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/hm_Z5I1Sn7Y" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed --><br />
<br />
I think the problem coming from climbing over 'ctrl_ground_slope' (as see from first 2 second, where it try to climb then slide back down, before I add extra move speed enough to climb over that slope and get burst forward, and not snapping on the ground).<br />
<br />
This even more noticeable if jump near or into the slope on high speed.<br />
<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/p7wNUBx3bew" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed --><br />
<br />
Is there a way to prevent these? I think make a character snapped to the ground is enough?<br />
<br />
Sorry for letterbox video/GUI, I messed up record. <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" />]]></description>
			<content:encoded><![CDATA[This is probably old problem, but I don't know what cause these.<br />
<br />
1. When jump rapidly while moving character will often got a speed burst when jumping again.<br />
<br />
2.When moving very fast speed on small slope that is can't be move up normally, character will try to 'climb' and slide back down, but will get a huge speed burst and not snap to the ground if able to climb that slope.<br />
<br />
I create phys without additional PhysMtrl config.<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Physics.create(EE_PHYSX_DLL_PATH).gravity(Vec(0, -9.8, 0));</code></div></div>
<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/_MX3eDe40Zg" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed --><br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>input.jump=Kb.bp(KB_J)*3.5f;</code></div></div>
<br />
However, I can fix first problem adding extra 'onGround' checking though. Did ctrl.update() forget to check for onGround() before jumping? <img src="images/smilies/pfft.gif" style="vertical-align: middle;" border="0" alt="pfft" title="pfft" /><br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>input.jump=Kb.bp(KB_J)*ctrl.onGround()*3.5f;</code></div></div>
<br />
The second problem however, is the main problem<br />
<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/hm_Z5I1Sn7Y" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed --><br />
<br />
I think the problem coming from climbing over 'ctrl_ground_slope' (as see from first 2 second, where it try to climb then slide back down, before I add extra move speed enough to climb over that slope and get burst forward, and not snapping on the ground).<br />
<br />
This even more noticeable if jump near or into the slope on high speed.<br />
<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/p7wNUBx3bew" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed --><br />
<br />
Is there a way to prevent these? I think make a character snapped to the ground is enough?<br />
<br />
Sorry for letterbox video/GUI, I messed up record. <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[2D Pysics]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8913</link>
			<pubDate>Tue, 22 Dec 2015 21:10:06 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8913</guid>
			<description><![CDATA[Hi there, <br />
<br />
is 2D Physics possible in Esenthel ?<br />
<br />
I am new to Esenthel and wanted to try sth like PingPong.<br />
For now I check collision with cuts and set the  Ballspeed *=-1. <br />
However, I want to add some Physics.<br />
In the Esenthel Tutorials I see only 3D Physics with Actors and its create function. <br />
But it is not working with Rects and Circles. Ty for answer. <img src="images/smilies/wink.gif" style="vertical-align: middle;" border="0" alt="wink" title="wink" />]]></description>
			<content:encoded><![CDATA[Hi there, <br />
<br />
is 2D Physics possible in Esenthel ?<br />
<br />
I am new to Esenthel and wanted to try sth like PingPong.<br />
For now I check collision with cuts and set the  Ballspeed *=-1. <br />
However, I want to add some Physics.<br />
In the Esenthel Tutorials I see only 3D Physics with Actors and its create function. <br />
But it is not working with Rects and Circles. Ty for answer. <img src="images/smilies/wink.gif" style="vertical-align: middle;" border="0" alt="wink" title="wink" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Solved] Problem with actor]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8777</link>
			<pubDate>Mon, 23 Nov 2015 21:42:48 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8777</guid>
			<description><![CDATA[I started from some basics physics tutorials but i have problem with settings actor position. As you can see on first screen from tutorials when box position is set to Vec(0,-2,0) ground display at Vec(0,0,0) but all matrices are moved down.<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2838" target="_blank">actor_001.png</a> (Size: 14.75 KB / Downloads: 146)
<!-- end: postbit_attachments_attachment --><br />
The same problem i have on my application. When box from which I create ground is set to Vec(0,0,0) it works good. But when is set to Vec(0,-2,0). I have the same problem. Blue box is a box from which i create ground actor.<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2839" target="_blank">actor_002.png</a> (Size: 15.01 KB / Downloads: 147)
<!-- end: postbit_attachments_attachment --><br />
Second problem I have with Controller PhysMtrl. I was able to set PhysMtrl for other objects but for Controller it's allways set to default one.<br />
<br />
Thanks for help.<br />
<br />
//Edit<br />
Screen from tutorial from old free version<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2840" target="_blank">actor_003.png</a> (Size: 17.4 KB / Downloads: 130)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[I started from some basics physics tutorials but i have problem with settings actor position. As you can see on first screen from tutorials when box position is set to Vec(0,-2,0) ground display at Vec(0,0,0) but all matrices are moved down.<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2838" target="_blank">actor_001.png</a> (Size: 14.75 KB / Downloads: 146)
<!-- end: postbit_attachments_attachment --><br />
The same problem i have on my application. When box from which I create ground is set to Vec(0,0,0) it works good. But when is set to Vec(0,-2,0). I have the same problem. Blue box is a box from which i create ground actor.<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2839" target="_blank">actor_002.png</a> (Size: 15.01 KB / Downloads: 147)
<!-- end: postbit_attachments_attachment --><br />
Second problem I have with Controller PhysMtrl. I was able to set PhysMtrl for other objects but for Controller it's allways set to default one.<br />
<br />
Thanks for help.<br />
<br />
//Edit<br />
Screen from tutorial from old free version<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2840" target="_blank">actor_003.png</a> (Size: 17.4 KB / Downloads: 130)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[ragdoll problem (EE 2)]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8549</link>
			<pubDate>Wed, 01 Jul 2015 21:46:54 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8549</guid>
			<description><![CDATA[Hello)<br />
I know ee2 not suport but<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/YcrIJ04F8vY" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed --><br />
it's game basics tutorial in EE 2<br />
<br />
p.s. in EE 1 and EE 3 all good((<br />
<br />
<br />
<br />
<br />
p.s.p.s. in rpg 2 (EE2)<br />
<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/iM1VA6L76ic" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed -->]]></description>
			<content:encoded><![CDATA[Hello)<br />
I know ee2 not suport but<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/YcrIJ04F8vY" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed --><br />
it's game basics tutorial in EE 2<br />
<br />
p.s. in EE 1 and EE 3 all good((<br />
<br />
<br />
<br />
<br />
p.s.p.s. in rpg 2 (EE2)<br />
<br />
<!-- start: video_youtube_embed --><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/iM1VA6L76ic" frameborder="0" allowfullscreen></iframe><br />
<!-- end: video_youtube_embed -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[how to use Particles at Android?]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8521</link>
			<pubDate>Mon, 01 Jun 2015 07:57:38 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8521</guid>
			<description><![CDATA[Hi all.<br />
<br />
I use the beginning tutorial -  [<span style="font-weight: bold;">14 - GameBase - 22 - Lights and Partides</span>].<br />
<br />
build an android platform app and install..but I can not see the fire Particles at my Android device screen..<br />
<br />
so What's the matter?<br />
<br />
my question is:<br />
1.how to use Particles at Android?<br />
2.why the tutorial can not run usually at Android?<br />
<br />
thanks.]]></description>
			<content:encoded><![CDATA[Hi all.<br />
<br />
I use the beginning tutorial -  [<span style="font-weight: bold;">14 - GameBase - 22 - Lights and Partides</span>].<br />
<br />
build an android platform app and install..but I can not see the fire Particles at my Android device screen..<br />
<br />
so What's the matter?<br />
<br />
my question is:<br />
1.how to use Particles at Android?<br />
2.why the tutorial can not run usually at Android?<br />
<br />
thanks.]]></content:encoded>
		</item>
	</channel>
</rss>