<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[GMan's Mods & Stuff]]></title>
		<link>https://gprogs.com/index.php</link>
		<atom:link href="https://gprogs.com/extern.php?action=feed&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[The most recent topics at GMan's Mods & Stuff.]]></description>
		<lastBuildDate>Fri, 01 Jan 2016 10:08:23 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[ZipEngine and BMX 64 Bit?]]></title>
			<link>https://gprogs.com/viewtopic.php?id=487&amp;action=new</link>
			<description><![CDATA[]]></description>
			<author><![CDATA[null@example.com (Grisu)]]></author>
			<pubDate>Fri, 01 Jan 2016 10:08:23 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=487&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[I am stuck with setup and compilation of the irrlicht modules, please]]></title>
			<link>https://gprogs.com/viewtopic.php?id=484&amp;action=new</link>
			<description><![CDATA[]]></description>
			<author><![CDATA[null@example.com (Juggernaut)]]></author>
			<pubDate>Sat, 31 Aug 2013 15:08:39 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=484&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[xeffects crash in addPostProcessingEffectFromFile]]></title>
			<link>https://gprogs.com/viewtopic.php?id=483&amp;action=new</link>
			<description><![CDATA[<p>Like the title says:<br />All examples of xeffect crash in the method effect.addPostProcessingEffectFromFile() although the filepath is valid.<br />But the irrlicht core runs perfectly on my computer.</p><p>Any ideas?</p><p>EDIT:<br />Nevermind. I&#039;m using Unity3D now.</p>]]></description>
			<author><![CDATA[null@example.com (unz)]]></author>
			<pubDate>Tue, 23 Jul 2013 13:24:54 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=483&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Not focused, no click]]></title>
			<link>https://gprogs.com/viewtopic.php?id=482&amp;action=new</link>
			<description><![CDATA[<p>If the app isn&#039;t the focus, then the system tray icon will not return any events. This is a huge problem if you want to hide an app in the system tray. Is there a way to workaround this? I haven&#039;t found any. Even tried having User32.dll force it to be the focused app but if the window is hidden that doesn&#039;t work.</p>]]></description>
			<author><![CDATA[null@example.com (VanessaNaire)]]></author>
			<pubDate>Sun, 14 Jul 2013 05:08:36 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=482&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Irrlicht 1.8]]></title>
			<link>https://gprogs.com/viewtopic.php?id=481&amp;action=new</link>
			<description><![CDATA[]]></description>
			<author><![CDATA[null@example.com (Duffer)]]></author>
			<pubDate>Sun, 30 Jun 2013 09:55:03 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=481&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Physics (ODE, Tokamak, newton)]]></title>
			<link>https://gprogs.com/viewtopic.php?id=476&amp;action=new</link>
			<description><![CDATA[<p>Hi!</p><p>Is there a way to use Tokamak or ODE with irrlicht.mod? If not, it would be awesome if you, gman, could make a wrapper for one. <img src="https://gprogs.com/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>Please Reply! <img src="https://gprogs.com/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></description>
			<author><![CDATA[null@example.com (CaptainWicker[IS])]]></author>
			<pubDate>Tue, 16 Apr 2013 20:00:58 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=476&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Support for CRX (Chrome Extension Files)]]></title>
			<link>https://gprogs.com/viewtopic.php?id=471&amp;action=new</link>
			<description><![CDATA[<p>Hi there, </p><p>the method ScanCentralHeader of Type TZipFileList can be changed to the following code (or similar), in order to make extraction of CRX (Chrome Extension Files) possible via zipengine.</p><div class="codebox"><pre><code>    

    Rem
        bbdoc: Scans the central header for files.  Returns true if successful.
    End Rem
    Method ScanCentralHeader:Int()
    
        SeekStream(zipFile, 0)
        Local magic_number:Int = ReadInt(zipFile);
        Local zip_start_pos:Int = 0;
        
        &#039; CRX FILE (Google Chrome Extension File), see: http://developer.chrome.com/extensions/crx.html
        If magic_number = $34327243 Then
            
            zip_start_pos:+4;
            
            ReadInt(zipFile); &#039; CRX Version
            zip_start_pos:+4;
            
            zip_start_pos:+ReadInt(zipFile); &#039; length of crx public key
            zip_start_pos:+4;
            
            zip_start_pos:+ReadInt(zipFile); &#039; length of crx signature
            zip_start_pos:+4;
            
            SeekStream(zipFile, zip_start_pos);
            magic_number:Int = ReadInt(zipFile);
            
        EndIf
        
        &#039; first check to see if its even a valid ZIP file
        If magic_number &lt;&gt; $04034b50 Then 
            DebugLog(&quot;Invalid ZIP file!&quot;)
            Return False
        EndIf
        
        Local header_start:Int = 0
        
        &#039; jump to the end
        SeekStream(zipFile, StreamSize(zipFile) - 4)
        
        &#039; seek the end central directory structure
        While Not StreamPos(zipFile) = 0
            Local sig:Int = ReadInt(zipFile)
            If sig = $06054b50 Then
                &#039; jump to start of central dir location    
                SeekStream(zipFile, StreamPos(zipFile) + 12)
                header_start = ReadInt(zipFile)
                Exit                
            Else
                &#039; rewind 3 bytes and try again
                SeekStream(zipFile, StreamPos(zipFile) - 5)
            EndIf
        EndWhile
    
        &#039; if we found the header, then process
        If Not header_start Then 
            DebugLog(&quot;unable to locate central directory!&quot;)
            Return False
        EndIf
        
        header_start:+zip_start_pos;
        
        &#039; seek to the start of the central directory
        SeekStream(zipFile, header_start)
        
        While True And Not Eof(zipFile)
            Local entry:SZipFileEntry = SZipFileEntry.Create()
            If entry.header.fill(zipFile) Then
                FileList.AddLast(entry)

                &#039; read filename
                entry.zipFileName = entry.header.FileName            
                extractFilename(entry)                                 
            Else
                Exit
            EndIf
        EndWhile
    
        Return True
    EndMethod</code></pre></div><p><img src="https://gprogs.com/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></description>
			<author><![CDATA[null@example.com (paramausi)]]></author>
			<pubDate>Wed, 13 Feb 2013 15:41:48 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=471&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Can't AddVertex (BB3D Irrlicht)]]></title>
			<link>https://gprogs.com/viewtopic.php?id=469&amp;action=new</link>
			<description><![CDATA[<p>hello together,</p><p>my problem is i want create a triangle like you can see in the following code. But i get an error every time in the surface.bmx. What should i do????</p><p>&nbsp; </p><div class="codebox"><pre><code>SuperStrict
Import irrlicht.b3d

ib3d_Graphics3D(800, 600, 32, 0, True, True, EDT_DIRECT3D8)



Global cam:CAMERA = ib3d_CreateCamera()
ib3d_PositionEntity(cam, 0, 0, -10)

Global light1:LIGHT = ib3d_CreateLight()
ib3d_PositionEntity(light1, 0, 0, 0)
 &#039;SMeshBuffer() 

Global cube:MESH = ib3d_CreateMesh()
Global surf:SURFACE = ib3d_CreateSurface(cube, SF_NORMAL)    
Global v1:Int = ib3d_AddVertex(surf, 0,0 , 0)
Global v2:Int = ib3d_AddVertex(surf, 1, -1, 0)
Global v3:Int = ib3d_AddVertex(surf, -1, -1, 0)
ib3d_AddTriangle(surf, v1, v2, v3)
ib3d_UpdateNormals(cube)

While Not ib3d_KeyDown(KEY_ESCAPE)


    ib3d_UpdateWorld
    ib3d_RenderWorld
WEnd</code></pre></div><p>Surface.bmx<br />The error show that something in this wrong in this Method:</p><p>&nbsp; </p><div class="codebox"><pre><code>    &#039; TODO: dont think this is working right.  need to examine source of addTestSceneNode().
    Method addVertex:Int(x:Float,y:Float,z:Float,nx:Float=0,ny:Float=0,nz:Float=0,u:Float=0,v:Float=0)
        If Not _mbuf Or Not _mbuf.isValid() Then RuntimeError &quot;Surface meshbuffer is invalid&quot;
Rem
        Local vert:S3DVertex=S3DVertexDefault.createFromVals(x,y,z,nx,ny,nz,SColor.createFromVals(255,255,255,255),u,v)
        Local vert_array:S3DVertex[1] = vert
        &#039;DebugLog(&quot;before: &quot;+_mbuf.getVertices().size())
        _mbuf.getVertices().push_back(vert)
        &#039;DebugLog(&quot;after: &quot;+_mbuf.getVertices().size())
EndRem
        RuntimeError &quot;Not Implemented&quot;
        Return _mbuf.getVertexCount()-1
    EndMethod</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Mangoo)]]></author>
			<pubDate>Sun, 06 Jan 2013 20:40:31 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=469&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Irrlicht 1.8 released!]]></title>
			<link>https://gprogs.com/viewtopic.php?id=468&amp;action=new</link>
			<description><![CDATA[<p>Hi gman,</p><p>Irrlicht 1.8 is released!<br />Can you update your wrapper please?</p><p>Thank you very much in advance.</p>]]></description>
			<author><![CDATA[null@example.com (porcus)]]></author>
			<pubDate>Mon, 19 Nov 2012 14:21:56 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=468&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[zwObject.RemoveFile()?]]></title>
			<link>https://gprogs.com/viewtopic.php?id=467&amp;action=new</link>
			<description><![CDATA[<p>Hi!</p><p>What&#039;s the best way to remove a certain file from multiple zip files (1000+) without having to recreate them manually each time?</p><p>A command like &quot;zwObject.RemoveFile(filename)&quot; would be quite helpful here.</p><p>Grisu</p>]]></description>
			<author><![CDATA[null@example.com (Grisu)]]></author>
			<pubDate>Sun, 19 Aug 2012 09:13:14 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=467&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[SmoothFollowWithCameraBumper]]></title>
			<link>https://gprogs.com/viewtopic.php?id=465&amp;action=new</link>
			<description><![CDATA[<div class="codebox"><pre><code>var distance : float = 3.0;
var height : float = 1.0;
var damping : float = 5.0;
var smoothRotation : boolean = true;
var rotationDamping : float = 10.0;
 
var targetLookAtOffset : Vector3;         // allows offsetting of camera lookAt, very useful for low bumper heights
 
var bumperDistanceCheck : float = 2.5;    // length of bumper ray
var bumperCameraHeight : float = 1.0;     // adjust camera height while bumping
var bumperRayOffset : Vector3;             // allows offset of the bumper ray from target origin
 
// If the target moves, the camera should child the target to allow for smoother movement. DR
function Awake()
{
    camera.transform.parent = target;
}
 
function FixedUpdate() {
 
    var wantedPosition = target.TransformPoint(0, height, -distance);
 
    // check to see if there is anything behind the target
    var hit : RaycastHit;
    var back = target.transform.TransformDirection(-1 * Vector3.forward);    
 
    // cast the bumper ray out from rear and check to see if there is anything behind
    if (Physics.Raycast(target.TransformPoint(bumperRayOffset), back, hit, bumperDistanceCheck) 
              &amp;&amp; hit.transform != target) { // ignore ray-casts that hit the user. DR
        // clamp wanted position to hit position
        wantedPosition.x = hit.point.x;
        wantedPosition.z = hit.point.z;
        wantedPosition.y = Mathf.Lerp(hit.point.y + bumperCameraHeight, wantedPosition.y, Time.deltaTime * damping);
    } 
 
    transform.position = Vector3.Lerp(transform.position, wantedPosition, Time.deltaTime * damping);
 
    var lookPosition : Vector3 = target.TransformPoint(targetLookAtOffset);
 
    if (smoothRotation) {
        var wantedRotation : Quaternion = Quaternion.LookRotation(lookPosition - transform.position, target.up);
        transform.rotation = Quaternion.Slerp(transform.rotation, wantedRotation, Time.deltaTime * rotationDamping);
    } else {
        transform.rotation = Quaternion.LookRotation(lookPosition - transform.position, target.up);
    }
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (gman)]]></author>
			<pubDate>Fri, 17 Aug 2012 11:58:49 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=465&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[SimpleTankController]]></title>
			<link>https://gprogs.com/viewtopic.php?id=464&amp;action=new</link>
			<description><![CDATA[<div class="codebox"><pre><code>enum direction {forward, reverse, stop};
 
public var parentToGround : boolean = false;                // automatically updates the parent to the object below to allow for moving objects to affect object
public var groundRayOffset : Vector3 = Vector3.zero;        // adjust where the parentToGround ray is cast from
public var groundRayCastLength : float = 1.0;                // how far does the parentToGround ray cast
 
public var topSpeedForward : float = 3.0;                     // top speed of forward
public var topSpeedReverse : float = 1.0;                     // top speed of reverse
public var accelerationRate : float = 3;                     // rate at which top speed is reached
public var decelerationRate : float = 2;                     // rate at which speed is lost when not accelerating
public var brakingDecelerationRate : float = 4;                // rate at which speed is lost when braking (input opposite of current direction)
public var stoppedTurnRate : float = 2.0;                    // rate at which object turns when stopped
public var topSpeedForwardTurnRate : float = 1.0;            // rate at which object turns at top forward speed
public var topSpeedReverseTurnRate : float = 2.0;            // rate at which object turns at top reverse speed
public var gravity = 10.0;                                    // gravity for object
public var stickyThrottle : boolean = false;                 // true to disable loss of speed if no input is provided
public var stickyThrottleDelay : float = .35;                // delay between change of direction when sticky throttle is enabled
 
private var currentSpeed : float = 0.0;                     // stores current speed
private var currentTopSpeed : float = topSpeedForward;         // stores top speed of current direction
private var currentDirection : direction = direction.stop;     // stores current direction
private var isBraking : boolean = false;                     // true if input is braking
private var isAccelerating : boolean = false;                 // true if input is accelerating
private var stickyDelayCount : float = 9999.0;                // current sticky delay count
private var characterController : CharacterController;
 
function Start() {
    characterController = GetComponent(CharacterController);
}
 
function FixedUpdate() {
 
    // direction to move this update
    var moveDirection : Vector3 = Vector3.zero;
    // direction requested this update
    var requestedDirection : direction = direction.stop;
 
    if(characterController.isGrounded == true) {
        // simulate loss of turn rate at speed
        var currentTurnRate = Mathf.Lerp((currentDirection == direction.forward ? topSpeedForwardTurnRate : topSpeedReverseTurnRate), stoppedTurnRate, (1- (currentSpeed/currentTopSpeed)));        
        transform.eulerAngles.y += Input.GetAxis(&quot;Horizontal&quot;) * currentTurnRate;
 
        // based on input, determine requested action
        if (Input.GetAxis(&quot;Vertical&quot;) &gt; 0) { // requesting forward
            requestedDirection = direction.forward;
            isAccelerating = true;
        } else if (Input.GetAxis(&quot;Vertical&quot;) &lt; 0) { // requesting reverse
            requestedDirection = direction.reverse;
            isAccelerating = true;
        } else {
            requestedDirection = currentDirection;
            isAccelerating = false;
        }
 
        isBraking = false;
 
        if (currentDirection == direction.stop) { // engage new direction
            stickyDelayCount += Time.deltaTime;
            // if we are not sticky throttle or if we have hit the delay then change direction
            if (!stickyThrottle || stickyDelayCount &gt; stickyThrottleDelay) {
                // make sure we can go in the requsted direction
                if (requestedDirection == direction.reverse &amp;&amp; topSpeedReverse &gt; 0 || 
                    requestedDirection == direction.forward &amp;&amp; topSpeedForward &gt; 0) {
 
                    currentDirection = requestedDirection;
                }
            }
        } else if (currentDirection != requestedDirection) { // requesting a change of direction, but not stopped so we are braking
            isBraking = true;
            isAccelerating = false;
        }
 
        // setup top speeds and move direction
        if (currentDirection == direction.forward) {
            moveDirection = Vector3.forward;
            currentTopSpeed = topSpeedForward;
        } else if (currentDirection == direction.reverse) {
            moveDirection = (-1 * Vector3.forward);
            currentTopSpeed = topSpeedReverse;
        } else if (currentDirection == direction.stop) {
            moveDirection = Vector3.zero;
        }
 
        if (isAccelerating) {
            //if we havent hit top speed yet, accelerate
           if (currentSpeed &lt; currentTopSpeed){ 
                currentSpeed += (accelerationRate * Time.deltaTime);     
           }
        } else {
            // if we are not accelerating and still have some speed, decelerate
            if (currentSpeed &gt; 0) {
                // adjust deceleration for braking and implement sticky throttle
                var currentDecelerationRate : float = (isBraking ? brakingDecelerationRate : (!stickyThrottle ? decelerationRate : 0));
                currentSpeed -= (currentDecelerationRate * Time.deltaTime);  
            }
        }
 
        // if our speed is below zero, stop and initialize
        if (currentSpeed &lt; 0 || (currentSpeed == 0 &amp;&amp; currentDirection != direction.stop)) {
            SetStopped();
        } else if (currentSpeed &gt; currentTopSpeed) { // limit the speed to the current top speed
            currentSpeed = currentTopSpeed;
        }
 
        moveDirection = transform.TransformDirection(moveDirection);
    }
 
    // implement gravity so we can stay grounded
    moveDirection.y -= gravity * Time.deltaTime;
    moveDirection.z = moveDirection.z * (Time.deltaTime * currentSpeed);
    moveDirection.x = moveDirection.x * (Time.deltaTime * currentSpeed);
    characterController.Move(moveDirection);
 
    if (parentToGround) {
        var hit : RaycastHit;
        var down = transform.TransformDirection (-1 * Vector3.up);    
 
        // cast the bumper ray out from bottom and check to see if there is anything below
        if (Physics.Raycast (transform.TransformPoint(groundRayOffset), down, hit, groundRayCastLength)) {
            // clamp wanted position to hit position
            transform.parent = hit.transform;
        }
 
        // if we are currently stopped, move just a tad to allow for collisions while parent is moving
        if (currentDirection == direction.stop) {
            characterController.SimpleMove(transform.TransformDirection(Vector3.forward) * 0.000000000001);        
        }
    }
 
}
 
function GetCurrentSpeed() {
    return currentSpeed;
}
 
function GetCurrentTopSpeed() {
    return currentTopSpeed;
}
 
function GetCurrentDirection() {
    return currentDirection;
}
 
function GetIsBraking() {
    return isBraking;
}
 
function GetIsAccelerating() {
    return isAccelerating;
}
 
function SetStopped() {
    currentSpeed = 0;
    currentDirection = direction.stop;
    isAccelerating = false;
    isBraking = false;
    stickyDelayCount = 0;
}
 
@script RequireComponent(CharacterController)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (gman)]]></author>
			<pubDate>Fri, 17 Aug 2012 11:55:04 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=464&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Oculus Rift support]]></title>
			<link>https://gprogs.com/viewtopic.php?id=463&amp;action=new</link>
			<description><![CDATA[]]></description>
			<author><![CDATA[null@example.com (marbas)]]></author>
			<pubDate>Thu, 16 Aug 2012 15:40:27 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=463&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[[Mac] Need compiled lib for 1.7.3]]></title>
			<link>https://gprogs.com/viewtopic.php?id=462&amp;action=new</link>
			<description><![CDATA[<p>Please, can you compile and upload the library for irrLicht 1.7.3?</p>]]></description>
			<author><![CDATA[null@example.com (Ratchet)]]></author>
			<pubDate>Sat, 09 Jun 2012 09:34:36 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=462&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Mod for Linux]]></title>
			<link>https://gprogs.com/viewtopic.php?id=460&amp;action=new</link>
			<description><![CDATA[]]></description>
			<author><![CDATA[null@example.com (porcus)]]></author>
			<pubDate>Tue, 01 May 2012 23:56:08 +0000</pubDate>
			<guid>https://gprogs.com/viewtopic.php?id=460&amp;action=new</guid>
		</item>
	</channel>
</rss>
