// Use this for initialization public void Init() { ChecksumExtractor.Init(this); gameObjectMap = new Dictionary <IBody, GameObject>(); collisionInfo = new Dictionary <RigidBody, Dictionary <RigidBody, TSCollision> >(); CollisionSystemPersistentSAP collisionSystem = new CollisionSystemPersistentSAP(); collisionSystem.EnableSpeculativeContacts = SpeculativeContacts; world = new World(collisionSystem); collisionSystem.world = world; world.physicsManager = this; world.Gravity = Gravity; world.Events.BodiesBeginCollide += CollisionEnter; world.Events.BodiesStayCollide += CollisionStay; world.Events.BodiesEndCollide += CollisionExit; world.Events.TriggerBeginCollide += TriggerEnter; world.Events.TriggerStayCollide += TriggerStay; world.Events.TriggerEndCollide += TriggerExit; world.Events.RemovedRigidBody += OnRemovedRigidBody; instance = this; AddRigidBodies(); }
public void Clone(IWorld iWorld, bool doChecksum) { World world = (World)iWorld; this.Reset(); if (doChecksum) { this.checksum = ChecksumExtractor.GetEncodedChecksum(); } this.clonedPhysics.Clear(); foreach (RigidBody rigidBody in world.RigidBodies) { RigidBodyClone @new = WorldClone.poolRigidBodyClone.GetNew(); @new.Clone(rigidBody); this.clonedPhysics.Add(rigidBody.GetInstance(), @new); } this.clonedArbiters.Clear(); foreach (Arbiter current in world.ArbiterMap.Arbiters) { ArbiterClone new2 = WorldClone.poolArbiterClone.GetNew(); new2.Clone(current); this.clonedArbiters.Add(new2); } this.clonedArbitersTrigger.Clear(); foreach (Arbiter current2 in world.ArbiterTriggerMap.Arbiters) { ArbiterClone new3 = WorldClone.poolArbiterClone.GetNew(); new3.Clone(current2); this.clonedArbitersTrigger.Add(new3); } this.collisionIslands.Clear(); this.index = 0; this.length = world.islands.Count; while (this.index < this.length) { CollisionIsland ci = world.islands[this.index]; CollisionIslandClone new4 = WorldClone.poolCollisionIslandClone.GetNew(); new4.Clone(ci); this.collisionIslands.Add(new4); this.index++; } this.cloneCollision.Clone((CollisionSystemPersistentSAP)world.CollisionSystem); this.clonedInitialCollisions.Clear(); this.clonedInitialCollisions.AddRange(world.initialCollisions); this.clonedInitialTriggers.Clear(); this.clonedInitialTriggers.AddRange(world.initialTriggers); this.rigidBodyInstanceCount = RigidBody.instanceCount; this.constraintInstanceCount = Constraint.instanceCount; }
public void Init() { ChecksumExtractor.Init(this); Physics2D.Settings.ContinuousPhysics = SpeculativeContacts; TSVector2 gravity = new TSVector2(Gravity.x, Gravity.y); m_World = new Physics2D.World(gravity); Physics2D.ContactManager.physicsManager = this; m_World.BodyRemoved += OnRemovedRigidbody; m_World.ContactManager.BeginContact += CollisionEnter; m_World.ContactManager.StayContact += CollisionStay; m_World.ContactManager.EndContact += CollisionExit; }
// Use this for initialization public void Init() { ChecksumExtractor.Init(this); Settings.ContinuousPhysics = SpeculativeContacts; world = new TrueSync.Physics2D.World(new TSVector2(Gravity.x, Gravity.y)); ContactManager.physicsManager = this; world.BodyRemoved += OnRemovedRigidBody; world.ContactManager.BeginContact += CollisionEnter; world.ContactManager.StayContact += CollisionStay; world.ContactManager.EndContact += CollisionExit; gameObjectMap = new Dictionary <IBody, GameObject>(); collisionInfo = new Dictionary <Physics2D.Body, Dictionary <Physics2D.Body, TSCollision2D> >(); instance = this; AddRigidBodies(); }
public void Clone(IWorld iWorld, bool doChecksum) { TrueSync.Physics2D.World world = (TrueSync.Physics2D.World)iWorld; this.Reset(); if (doChecksum) { this.checksum = ChecksumExtractor.GetEncodedChecksum(); } this.clonedPhysics.Clear(); this.index = 0; this.length = world.BodyList.Count; while (this.index < this.length) { Body body = world.BodyList[this.index]; BodyClone2D @new = WorldClone2D.poolRigidBodyClone.GetNew(); @new.Clone(body); this.clonedPhysics.Add(body.BodyId, @new); this.index++; } this.contactsClone.Clear(); this.index = 0; this.length = world.ContactList.Count; while (this.index < this.length) { TrueSync.Physics2D.Contact contact = world.ContactList[this.index]; ContactClone2D new2 = WorldClone2D.poolContactClone.GetNew(); new2.Clone(contact); this.contactsClone.Add(new2); this.index++; } this.islandClone.Clone(world.Island); this.toiClone.Clone(world._input); this.dynamicTreeClone.Clone((DynamicTreeBroadPhase)world.ContactManager.BroadPhase); this._worldHasNewFixture = world._worldHasNewFixture; this.bodyCounter = Body._bodyIdCounter; this.fixtureCounter = Fixture._fixtureIdCounter; }
protected override string GetChecksumForSyncedInfo() { return(ChecksumExtractor.GetEncodedChecksum()); }
// UTILS private string GetChecksum(bool i_Plain) { return(ChecksumExtractor.GetEncodedChecksum()); }
internal string GetChecksum(bool plain) { return(ChecksumExtractor.GetEncodedChecksum()); }