public void HandleCollision(FreeObject obj) { var position = obj.Position; foreach (var body in this.game.Bodies) { var shape = body.Shape; var difference = shape.Center - position; var distanceSquared = difference.LengthSquared; if (distanceSquared < shape.Radius.Squared) { var command = ParticlePlanetCollision.Command(this.game, obj, body); this.commandSender.ExecuteAndSend(command); if (obj.Deleted) { return; } } } }
private static void Test3() { STMObject <ValueHolder> result = new FreeObject <ValueHolder>(new ValueHolder(10)); var system = FreeStmSystem.GetInstance(); var t1 = new Thread(() => { var r1 = system.Atomic(() => { if (result.GetValue().Value == 10) { Thread.Yield(); result.SetValue(new ValueHolder(0)); } else { result.SetValue(new ValueHolder(1)); } return(result.GetValue()); }); Console.WriteLine("Result: " + r1); }); var t2 = new Thread(() => system.Atomic(() => result.SetValue(new ValueHolder(12)))); t1.Start(); t2.Start(); t1.Join(); t2.Join(); }
public CommandImplementation(GameState game, NetBuffer buffer) : base(CommandType.ParticlePlanetCollision, game) { var parameters = buffer.Read <Parameters>(); this.body = game.Bodies[parameters.BodyId]; this.particle = game.FreeObjects[parameters.ParticleId]; }
private static void Test2() { var system = FreeStmSystem.GetInstance(); STMObject <ValueHolder> fo = new FreeObject <ValueHolder>(new ValueHolder(5)); var result = system.Atomic(() => { fo.SetValue(new ValueHolder(12)); return(fo.GetValue()); }); }
public void SetStatus(bool used) { if (used) { FreeObject.SetActive(false); UsedObject.SetActive(true); } else { FreeObject.SetActive(true); UsedObject.SetActive(false); } }
public void HandleCollision(FreeObject obj) { var position = obj.Position; foreach (var body in this.game.Bodies) { var shape = body.Shape; var difference = shape.Center - position; var distanceSquared = difference.LengthSquared; if (distanceSquared < shape.Radius.Squared) { var command = ParticlePlanetCollision.Command(this.game, obj, body); this.commandSender.ExecuteAndSend(command); if (obj.Deleted) return; } } }
public static SingleParameters FromParticle(FreeObject obj) { return(new SingleParameters(obj.Id, obj.Position, obj.Velocity)); }
public FreeObjectBuilder(FreeObject freeObject) { this.freeObject = freeObject; }
public void Sync(FreeObject obj) { }
public static SingleParameters FromParticle(FreeObject obj) { return new SingleParameters(obj.Id, obj.Position, obj.Velocity); }
public void Sync(FreeObject obj) { this.objects.Enqueue(obj); }
private static void Test1() { var system = FreeStmSystem.GetInstance(); STMObject <ValueHolder> fo = new FreeObject <ValueHolder>(new ValueHolder(15)); var t1 = new Thread(() => { var result = system.Atomic(() => { fo.SetValue(new ValueHolder(1)); return(fo.GetValue()); }); }); var t2 = new Thread(() => { var result = system.Atomic(() => { fo.SetValue(new ValueHolder(2)); return(fo.GetValue()); }); }); var t3 = new Thread(() => { var result = system.Atomic(() => { fo.SetValue(new ValueHolder(3)); return(fo.GetValue()); }); }); var t4 = new Thread(() => { var result = system.Atomic(() => { fo.SetValue(new ValueHolder(4)); return(fo.GetValue()); }); }); var t5 = new Thread(() => { var result = system.Atomic(() => { fo.SetValue(new ValueHolder(5)); return(fo.GetValue()); }); }); t1.Start(); t2.Start(); t3.Start(); t4.Start(); t5.Start(); t1.Join(); t2.Join(); t3.Join(); t4.Join(); t5.Join(); }
public CommandImplementation(GameState game, FreeObject particle, IBody body) : base(CommandType.ParticlePlanetCollision, game) { this.particle = particle; this.body = body; }
public void HandleCollision(FreeObject obj) { }
public Parameters(FreeObject particle, IBody body) { this.particleId = particle.Id.Simple; this.bodyId = body.Id.Simple; }
public static ICommand Command(GameState game, FreeObject particle, IBody body) { return(new CommandImplementation(game, particle, body)); }