cinvoke-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cinvoke-svn] r124 - trunk/skorpion


From: will
Subject: [cinvoke-svn] r124 - trunk/skorpion
Date: 17 Nov 2006 00:31:07 -0500

Author: vmy
Date: 2006-11-17 00:31:06 -0500 (Fri, 17 Nov 2006)
New Revision: 124

Modified:
   trunk/skorpion/Client.cs
   trunk/skorpion/ParticleSystem.cs
   trunk/skorpion/skorpion.cs
Log:
isolated constructor of paddle particles inside thruster clientstate variable; 
improved thruster particle model but left it disabled for prym's sanity

Modified: trunk/skorpion/Client.cs
===================================================================
--- trunk/skorpion/Client.cs    2006-11-16 16:13:23 UTC (rev 123)
+++ trunk/skorpion/Client.cs    2006-11-17 05:31:06 UTC (rev 124)
@@ -138,7 +138,7 @@
                                                s.Position    = 
m.ShipPos[j].GetVector();
                                                s.Orientation = 
m.ShipOrt[j].GetVector();
                                                s.UpDirection = 
m.ShipUp[j].GetVector();
-                                       //      s.Velocity    = 
m.ShipVel[j].GetVector();
+                                               //s.Velocity    = 
m.ShipVel[j].GetVector();
                                                s.Team        = m.ShipTeam[j];
                                        }
 

Modified: trunk/skorpion/ParticleSystem.cs
===================================================================
--- trunk/skorpion/ParticleSystem.cs    2006-11-16 16:13:23 UTC (rev 123)
+++ trunk/skorpion/ParticleSystem.cs    2006-11-17 05:31:06 UTC (rev 124)
@@ -258,15 +258,41 @@
                                                Particle p = 
(Particle)_particlesList[ii];
                                
                                                // Calculate new position
-                                               float fRand = 
((float)_rand.Next(int.MaxValue)/(float)int.MaxValue) * 1.1f;
-                                               p.positionVector    = 
p.initialPosition; // should be random
-                                               p.positionVector.Scale(fRand);
+                                               // Calculate new position
+                                               float fT = _time - 
p.creationTime;
+                                               float fGravity;
+
+                                               if (p.isSpark)
+                                               {
+                                                       fGravity = -0.05f;
+                                                       p.fadeProgression -= 
(fSecsPerFrame * 2.25f);
+                                               }
+                                               else
+                                               {
+                                                       fGravity = -9.8f;
+                                                       p.fadeProgression -= 
fSecsPerFrame * 0.25f;
+                                               }
+
+                                               p.positionVector    = 
p.initialVelocity * fT + p.initialPosition;
+                                               p.positionVector.Y += (0.5f * 
fGravity) * (fT * fT);
+                                               p.velocityVector.Y  = 
p.initialVelocity.Y + fGravity * fT;
                
                                                if (p.fadeProgression < 0.0f)
                                                        p.fadeProgression = 
0.0f;
 
-                                               // remove particles if they 
time out
-                                               _particlesList[ii] = p;
+                                               // remove particles... or if 
they are a spark that has faded
+                                               //if (p.positionVector.Y + 100 
< _radius || p.isSpark && p.fadeProgression <= 0.0f)
+                                               if(fT > .3f  || p.isSpark && 
p.fadeProgression <= 0.0f)
+                                               {
+                                                       // Kill particle
+                                                       _freeParticles.Add(p);
+                                                       
_particlesList.RemoveAt(ii);
+
+                                                       if (!p.isSpark)
+                                                               
_particleCount--;
+                                               }                       
+                                               else
+                                                       _particlesList[ii] = p; 
                                
                                        }
                                        
                                        // emit NumParticlesToEmit new 
particles, but dont exceed _particlesLimit 
@@ -293,17 +319,16 @@
 
                                                particle.initialPosition = 
vPosition + new Vector3(_radius, 0.0f, 0.0f);
 
-                                               particle.initialVelocity.X  = 
(float)Math.Cos(fRand1) * (float)Math.Sin(fRand2) * 2.5f;
-                                               particle.initialVelocity.Z  = 
(float)Math.Sin(fRand1) * (float)Math.Sin(fRand2) * 2.5f;
-                                               particle.initialVelocity.Y  = 
(float)Math.Cos(fRand2);
-                                               particle.initialVelocity.Y *= 
((float)_rand.Next(int.MaxValue)/(float)int.MaxValue) * _emitVelocity;
-                                               //particle.initialVelocity = 
vVelocity;
+                                               particle.initialVelocity = 
vVelocity;
+                                               
particle.initialVelocity.Scale(-1);
+
+                                               particle.initialVelocity.X  += 
(float)Math.Cos(fRand1) * (float)Math.Sin(fRand2) * 2.5f;
+                                               particle.initialVelocity.Z  += 
(float)Math.Sin(fRand1) * (float)Math.Sin(fRand2) * 2.5f;
+                                               particle.initialVelocity.Y  += 
(float)Math.Cos(fRand2);
                                                particle.initialVelocity.X += 
(float)Math.Cos(fRand1) * (float)Math.Sin(fRand2) * .5f;
                                                particle.initialVelocity.Y += 
(float)Math.Sin(fRand1) * (float)Math.Sin(fRand2) * .5f;
                                                particle.initialVelocity.Z += 
(float)Math.Sin(fRand1) * (float)Math.Cos(fRand2) * .5f;
 
-                                               
//particle.initialVelocity.Scale(-10);
-
                                                particle.positionVector = 
particle.initialPosition;
                                                particle.velocityVector = 
particle.initialVelocity;
 
@@ -331,7 +356,7 @@
                                        dev.RenderState.PointSize = 0.8f; 
//0.08f;
                                        break;
                                case Mode.engineThrob:
-                                       dev.RenderState.PointSize = 8f; //0.08f;
+                                       dev.RenderState.PointSize = 2f; //0.08f;
                                        break;
                        }
 

Modified: trunk/skorpion/skorpion.cs
===================================================================
--- trunk/skorpion/skorpion.cs  2006-11-16 16:13:23 UTC (rev 123)
+++ trunk/skorpion/skorpion.cs  2006-11-17 05:31:06 UTC (rev 124)
@@ -267,24 +267,26 @@
                        // ship text
 
                        // thrusters
-                       iThrusterParticleSystem = new 
ParticleSystem(ParticleSystem.Mode.engineThrob, 512, 2048);
-                       iThrusterParticleSystem.Radius = 3;
-                       iThrusterParticleSystem.ParticlesLimit = 4;
-                       iThrusterParticleSystem.NumParticlesToEmit = 1;
-                       iThrusterParticleSystem.EmitVelocity = 1;
-                       iThrusterParticleTexture = TextureLoader.FromFile(  
iDevice,
-                               System.IO.Directory.GetCurrentDirectory() + 
"\\assets\\Particle.bmp",
-                               D3DX.Default,
-                               D3DX.Default,
-                               D3DX.Default,
-                               0,
-                               Format.Unknown,
-                               Pool.Managed,
-                               Filter.Triangle|Filter.Mirror,
-                               Filter.Triangle|Filter.Mirror,
-                               0);
-                       iThrusterParticleSystem.RestoreDeviceObjects(iDevice);
-
+                       if(ClientConfig.Thrusters)
+                       {
+                               iThrusterParticleSystem = new 
ParticleSystem(ParticleSystem.Mode.engineThrob, 512, 2048);
+                               iThrusterParticleSystem.Radius = .1f;
+                               iThrusterParticleSystem.ParticlesLimit = 512;
+                               iThrusterParticleSystem.NumParticlesToEmit = 1;
+                               iThrusterParticleSystem.EmitVelocity = 100;
+                               iThrusterParticleTexture = 
TextureLoader.FromFile(  iDevice,
+                                       
System.IO.Directory.GetCurrentDirectory() + "\\assets\\Particle.bmp",
+                                       D3DX.Default,
+                                       D3DX.Default,
+                                       D3DX.Default,
+                                       0,
+                                       Format.Unknown,
+                                       Pool.Managed,
+                                       Filter.Triangle|Filter.Mirror,
+                                       Filter.Triangle|Filter.Mirror,
+                                       0);
+                               
iThrusterParticleSystem.RestoreDeviceObjects(iDevice);
+                       }
                        // particles
                        iBallParticleSystem = new 
ParticleSystem(ParticleSystem.Mode.ballFountain, 512, 2048);
                        iBallParticleSystem.Radius = 3; //0.03f;
@@ -549,18 +551,21 @@
 
                        // draw pulsating thruster on ship
                        foreach(Entity e2 in 
GlobalState.Client.ThisFrame.Values)
-                               //foreach(Entity e in 
(Entity)GlobalState.Client.Universe.Entities[2])
                        {
                                if (e2.Type == Ship.TYPE)
                                {       
-                                       iDevice.Transform.World = 
Matrix.Translation(e2.Position.X, e2.Position.Y, e2.Position.Z);
+                                       iDevice.Transform.World = 
Matrix.Translation(0f, 0f, 0f);
                                        
                                        if (ClientConfig.Thrusters) 
                                        {
+                                               Ship s = (Ship)e2;
+                                               Vector3 v = new 
Vector3(s.Orientation.X, s.Orientation.Y, s.Orientation.Z);
+                                               
+                                               v.Scale(100);
                                                
iThrusterParticleSystem.Update(.03F,
                                                        
g_clrColor[(int)iThrusterParticleColor],
                                                        
g_clrColorFade[(int)iThrusterParticleColor],
-                                                       new Vector3(0f, 0f, 
0f), new Vector3(0f, 0f, .1f));
+                                                       new 
Vector3(e2.Position.X, e2.Position.Y, e2.Position.Z), v);
                                                
iDevice.RenderState.ZBufferWriteEnable = false;
                                                
iDevice.RenderState.AlphaBlendEnable = true;
                                                iDevice.RenderState.SourceBlend 
= Blend.One;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]