public static MinorAsteroid CreateSmallAsteroid(SceneMgr mgr, Vector direction, Vector center, int rot, int textureId, int radius, float speed, double rotation) { MinorAsteroid asteroid = new MinorAsteroid(mgr, IdMgr.GetNewId(mgr.GetCurrentPlayer().GetId())); asteroid.AsteroidType = AsteroidType.SPAWNED; asteroid.Rotation = rot; asteroid.Direction = direction.Rotate(rotation); asteroid.Radius = radius; asteroid.Position = center; asteroid.Gold = radius * 2; asteroid.TextureId = textureId; asteroid.Enabled = true; asteroid.SetGeometry(SceneGeometryFactory.CreateAsteroidImage(asteroid)); SphereCollisionShape cs = new SphereCollisionShape(); cs.Center = asteroid.Center; cs.Radius = asteroid.Radius; asteroid.CollisionShape = cs; NewtonianMovementControl nmc = new NewtonianMovementControl(); nmc.Speed = speed; asteroid.AddControl(nmc); LinearRotationControl lrc = new LinearRotationControl(); lrc.RotationSpeed = mgr.GetRandomGenerator().Next(SharedDef.MIN_ASTEROID_ROTATION_SPEED, SharedDef.MAX_ASTEROID_ROTATION_SPEED) / 10.0f; asteroid.AddControl(lrc); asteroid.AddControl(new MinorAsteroidCollisionReactionControl()); asteroid.AddControl(new StickySphereCollisionShapeControl()); return(asteroid); }
private ISceneObject MakeObjectStatic(ISceneObject obj) { NewtonianMovementControl nmc = obj.GetControlOfType <NewtonianMovementControl>(); nmc.Speed = 0; nmc.Enabled = false; return(obj); }
private static Asteroid CreateAsteroidControls(ServerMgr mgr, Asteroid s) { NewtonianMovementControl nmc = new NewtonianMovementControl(); nmc.Speed = mgr.GetRandomGenerator().Next(SharedDef.MIN_ASTEROID_SPEED * 10, SharedDef.MAX_ASTEROID_SPEED * 10) / 10.0f; s.AddControl(nmc); LinearRotationControl lrc = new LinearRotationControl(); lrc.RotationSpeed = mgr.GetRandomGenerator().Next(SharedDef.MIN_ASTEROID_ROTATION_SPEED, SharedDef.MAX_ASTEROID_ROTATION_SPEED) / 10.0f; s.AddControl(lrc); s.AddControl(new StickySphereCollisionShapeControl()); return(s); }
public static StatPowerUp CreateStatPowerUp(ServerMgr mgr, DeviceType type) { Random randomGenerator = mgr.GetRandomGenerator(); StatPowerUp s = new StatPowerUp(null, IdMgr.GetNewId(0)); s.Size = new Size(20, 20); bool headingRight = randomGenerator.Next(10) > 5 ? true : false; s.Position = GetPositionOnEdgeOfLowerOrbitArea(randomGenerator, headingRight, (int)s.Size.Width / 2); s.Direction = headingRight ? new Vector(1, 0) : new Vector(-1, 0); s.Rotation = mgr.GetRandomGenerator().Next(360); s.PowerUpType = type; SquareCollisionShape cs = new SquareCollisionShape(); cs.Position = s.Position; cs.Size = s.Size; cs.Rotation = s.Rotation; s.CollisionShape = cs; NewtonianMovementControl nmc = new NewtonianMovementControl(); nmc.Speed = mgr.GetRandomGenerator().Next(SharedDef.MIN_POWERUP_SPEED * 10, SharedDef.MAX_POWERUP_SPEED * 10) / 10.0f; s.AddControl(nmc); LinearRotationControl lrc = new LinearRotationControl(); lrc.RotationSpeed = mgr.GetRandomGenerator().Next(SharedDef.MIN_ASTEROID_ROTATION_SPEED, SharedDef.MAX_ASTEROID_ROTATION_SPEED) / 10.0f; s.AddControl(lrc); s.AddControl(new StickySquareCollisionShapeControl()); s.AddControl(new StatPowerUpCollisionReactionControl()); return(s); }
public static void ReadObjectNewtonianMovementControl(this NetIncomingMessage msg, NewtonianMovementControl c) { msg.ReadControl(c); c.Speed = msg.ReadFloat(); }
public static void WriteObjectNewtonianMovementControl(this NetOutgoingMessage msg, NewtonianMovementControl c) { msg.WriteControl(c); msg.Write(c.Speed); }
public static IList <IControl> ReadControls(this NetIncomingMessage msg) { int controlCount = msg.ReadInt32(); IList <IControl> controls = new List <IControl>(controlCount); for (int i = 0; i < controlCount; ++i) { int hash = msg.ReadInt32(); if (hash == typeof(BaseCollisionControl).GUID.GetHashCode()) { BaseCollisionControl c = new BaseCollisionControl(); msg.ReadControl(c); controls.Add(c); } else if (hash == typeof(BouncingSingularityBulletControl).GUID.GetHashCode()) { BouncingSingularityBulletControl c = new BouncingSingularityBulletControl(); msg.ReadObjectExplodingSingularityBulletControl(c); controls.Add(c); } else if (hash == typeof(DroppingSingularityControl).GUID.GetHashCode()) { DroppingSingularityControl c = new DroppingSingularityControl(); msg.ReadObjectDroppingSingularityControl(c); controls.Add(c); } else if (hash == typeof(AsteroidDroppingSingularityControl).GUID.GetHashCode()) { AsteroidDroppingSingularityControl c = new AsteroidDroppingSingularityControl(); msg.ReadObjectDroppingSingularityControl(c); controls.Add(c); } else if (hash == typeof(NewtonianMovementControl).GUID.GetHashCode()) { NewtonianMovementControl c = new NewtonianMovementControl(); msg.ReadObjectNewtonianMovementControl(c); controls.Add(c); } else if (hash == typeof(LinearMovementControl).GUID.GetHashCode()) { LinearMovementControl c = new LinearMovementControl(); msg.ReadObjectLinearMovementControl(c); controls.Add(c); } else if (hash == typeof(LinearRotationControl).GUID.GetHashCode()) { LinearRotationControl c = new LinearRotationControl(); msg.ReadObjectLinearRotationControl(c); controls.Add(c); } else if (hash == typeof(PowerHookControl).GUID.GetHashCode()) { PowerHookControl c = new PowerHookControl(); msg.ReadObjectHookControl(c); controls.Add(c); } else if (hash == typeof(HookControl).GUID.GetHashCode()) { HookControl c = new HookControl(); msg.ReadObjectHookControl(c); controls.Add(c); } else if (hash == typeof(ExplodingSingularityBulletControl).GUID.GetHashCode()) { ExplodingSingularityBulletControl c = new ExplodingSingularityBulletControl(); msg.ReadObjectExplodingSingularityBulletControl(c); controls.Add(c); } else if (hash == typeof(ExcludingExplodingSingularityBulletControl).GUID.GetHashCode()) { ExcludingExplodingSingularityBulletControl c = new ExcludingExplodingSingularityBulletControl(); msg.ReadObjectExcludingExplodingSingularityBulletControl(c); controls.Add(c); } else if (hash == typeof(MinorAsteroidCollisionReactionControl).GUID.GetHashCode()) { MinorAsteroidCollisionReactionControl c = new MinorAsteroidCollisionReactionControl(); msg.ReadControl(c); controls.Add(c); } else if (hash == typeof(SingularityBulletCollisionReactionControl).GUID.GetHashCode()) { SingularityBulletCollisionReactionControl c = new SingularityBulletCollisionReactionControl(); msg.ReadControl(c); controls.Add(c); } else if (hash == typeof(StatPowerUpCollisionReactionControl).GUID.GetHashCode()) { StatPowerUpCollisionReactionControl c = new StatPowerUpCollisionReactionControl(); msg.ReadControl(c); controls.Add(c); } else if (hash == typeof(StickyPointCollisionShapeControl).GUID.GetHashCode()) { StickyPointCollisionShapeControl c = new StickyPointCollisionShapeControl(); msg.ReadControl(c); controls.Add(c); } else if (hash == typeof(StickySphereCollisionShapeControl).GUID.GetHashCode()) { StickySphereCollisionShapeControl c = new StickySphereCollisionShapeControl(); msg.ReadControl(c); controls.Add(c); } else if (hash == typeof(StickySquareCollisionShapeControl).GUID.GetHashCode()) { StickySquareCollisionShapeControl c = new StickySquareCollisionShapeControl(); msg.ReadControl(c); controls.Add(c); } else if (hash == typeof(BaseHealthControl).GUID.GetHashCode()) { BaseHealthControl c = new BaseHealthControl(); msg.ReadHealthControl(c); controls.Add(c); } else if (hash == typeof(DestroyHpControl).GUID.GetHashCode()) { DestroyHpControl c = new DestroyHpControl(); msg.ReadHealthControl(c); controls.Add(c); } else if (hash == typeof(HpRegenControl).GUID.GetHashCode()) { HpRegenControl c = new HpRegenControl(); msg.ReadHealthRegenControl(c); controls.Add(c); } else if (hash == typeof(ModuleDamageControl).GUID.GetHashCode()) { ModuleDamageControl c = new ModuleDamageControl(); msg.ReadModuleDamageControl(c); controls.Add(c); } else if (hash == typeof(HighlightingControl).GUID.GetHashCode()) { // skip } else { Logger.Error("Received unsupported control (" + hash + ")!"); } } return(controls); }