public void EarlySimulate () { if (HasParent) { } else { if (VelocityChanged) { VelocityMagnitude = Velocity.Magnitude (); VelocityChanged = false; } if (VelocityMagnitude != 0) { Position.x += Velocity.x; Position.y += Velocity.y; PositionChanged = true; } } if (PositionChanged) { Partition.PartitionObject (this); Offset = Position - LastPosition; LastPosition = Position; PositionChangedBuffer = true; } else { PositionChangedBuffer = false; } if (RotationChanged) { RotationChangedBuffer = true; } else { RotationChangedBuffer = false; } }
public void Initialize(Vector2d StartPosition, Vector2d StartRotation) { Parent = null; PositionChanged = true; RotationChanged = true; VelocityChanged = true; PositionChangedBuffer = false; RotationChangedBuffer = false; Priority = _priority; Velocity = Vector2d.zero; VelocityFastMagnitude = 0; Position = StartPosition; Rotation = StartRotation; _parent = null; LocalPosition = Vector2d.zero; LocalRotation = Vector2d.up; XMin = 0; XMax = 0; YMin = 0; YMax = 0; PastGridXMin = long.MaxValue; PastGridXMax = long.MaxValue; PastGridYMin = long.MaxValue; PastGridYMax = long.MaxValue; if (Shape != ColliderType.None) { BuildPoints(); BuildBounds(); } ID = PhysicsManager.Assimilate(this); Partition.PartitionObject(this); visualPosition = Position.ToVector3(0f); lastVisualPos = visualPosition; _positionalTransform.position = visualPosition; visualRot = Quaternion.LookRotation(Rotation.ToVector3(0f)); lastVisualRot = visualRot; _positionalTransform.rotation = visualRot; }
public void Initialize(Vector3d StartPosition, Vector2d StartRotation, bool isDynamic = true) { Active = true; PositionalTransform = _positionalTransform; RotationalTransform = _rotationalTransform; if (!Setted) { this.Setup(null); } this.RaycastVersion = 0; this.HeightPosChanged = true; CheckVariables(); PositionChanged = true; RotationChanged = true; VelocityChanged = true; PositionChangedBuffer = true; RotationChangedBuffer = true; Priority = BasePriority; Velocity = Vector2d.zero; VelocityMagnitude = 0; LastPosition = _position = StartPosition.ToVector2d(); _heightPos = StartPosition.z; _rotation = StartRotation; ForwardNeedsSet = true; FastRadius = this.Radius * this.Radius; XMin = 0; XMax = 0; YMin = 0; YMax = 0; PastGridXMin = int.MaxValue; PastGridXMax = int.MaxValue; PastGridYMin = int.MaxValue; PastGridYMax = int.MaxValue; if (Shape != ColliderType.None) { BuildPoints(); BuildBounds(); } ID = PhysicsManager.Assimilate(this, isDynamic); Partition.PartitionObject(this); if (PositionalTransform != null) { CanSetVisualPosition = true; _visualPosition = _position.ToVector3(HeightPos.ToFloat()); lastVisualPos = _visualPosition; PositionalTransform.position = _visualPosition; } else { CanSetVisualPosition = false; } if (RotationalTransform != null) { CanSetVisualRotation = true; visualRot = GetVisualRot(); // _rotationOffset = transform.GetComponent<InvasionDay.GeoHandler>()._eulerOffset; lastVisualRot = visualRot; } else { CanSetVisualRotation = false; } SetVisuals(); velocityPosition = Vector3.zero; this.ImmovableCollisionDirection = Vector2d.zero; PartitionChanged = true; }
public void Initialize(Vector2dHeight StartPosition, Vector2d StartRotation) { PositionalTransform = _positionalTransform; RotationalTransform = _rotationalTransform; if (!Setted) { this.Setup(null); } this.RaycastVersion = 0; this.HeightPosChanged = true; CheckVariables(); PositionChanged = true; RotationChanged = true; VelocityChanged = true; PositionChangedBuffer = true; RotationChangedBuffer = true; Priority = _basePriority; Velocity = Vector2d.zero; VelocityFastMagnitude = 0; LastPosition = _position = StartPosition.ToVector2d(); _heightPos = StartPosition.Height; _rotation = StartRotation; ForwardNeedsSet = true; XMin = 0; XMax = 0; YMin = 0; YMax = 0; PastGridXMin = int.MaxValue; PastGridXMax = int.MaxValue; PastGridYMin = int.MaxValue; PastGridYMax = int.MaxValue; if (Shape != ColliderType.None) { BuildPoints(); BuildBounds(); } ID = PhysicsManager.Assimilate(this); Partition.PartitionObject(this); if (PositionalTransform != null) { CanSetVisualPosition = true; _visualPosition = _position.ToVector3(HeightPos.ToFloat()); lastVisualPos = _visualPosition; PositionalTransform.position = _visualPosition; } else { CanSetVisualPosition = false; } if (RotationalTransform != null) { CanSetVisualRotation = true; visualRot = Quaternion.LookRotation(Forward.ToVector3(0f)); lastVisualRot = visualRot; RotationalTransform.rotation = visualRot; } else { CanSetVisualRotation = false; } }
public virtual void Initialize(Vector3d StartPosition, Vector2d StartRotation, bool isDynamic = true) { InitializeVariables(StartPosition, StartRotation, isDynamic); ID = PhysicsManager.Assimilate(this, isDynamic); Partition.PartitionObject(this); }
public static void Simulate() { CollisionIterationRemain = (CollisionPairCount) / CollisionIterationSpread + 1; if (CollisionIterationCount == CollisionIterationSpread) { CollisionIterationCount = 0; CollisionIterationMark = 0; } else { CollisionIterationMark += CollisionIterationRemain; } CurCount = 0; for (i = 0; i < FastCollisionPairs.Count; i++) { pair = FastCollisionPairs[i]; CurCount++; if (CollisionIterationRemain == 0 || CurCount < CollisionIterationMark) { pair.DistributeCollision(); } else { pair.CheckAndDistributeCollision(); CollisionIterationRemain--; } } if (CollisionIterationCount == 0) { for (i = 0; i < PeakCount; i++) { if (SimObjectExists [i]) { LSBody b1 = SimObjects [i]; b1.EarlySimulate(); if (b1.PositionChanged) { Partition.Body = b1; Partition.PartitionObject(); } b1.Simulate(); } } Partition.EstablishPartitions(); } else { for (i = 0; i < PeakCount; i++) { if (SimObjectExists [i]) { LSBody b1 = SimObjects [i]; b1.EarlySimulate(); b1.Simulate(); } } } CollisionIterationCount++; }