public void SetBindToPhysicalCamera(GameObject camObj) { gameObjectParentedTo = camObj; gameObjectParentedToName = camObj.GetName(); // load back using CameraRotationLimit's x and y angles SetUpdateLookAtDirAndPosition(); // If the camObj is sticky camera, AND sticky camera is stuck on a non-static object isParentObjStatic = true; if (camObj == Common.GetStickyCamera()) { CTransform wallObj = camObj.transform.GetParent(); if (wallObj != null) { CPhysics phy = wallObj.gameObject.GetComponent <CPhysics>(); if (phy != null && phy.mColliderType != 0) { isParentObjStatic = false; } } } else if (camObj == Common.GetRCCarCam()) { isParentObjStatic = false; } }
void AddToChildren(CPhysics item) { var minPoint = item.Collider.Position - item.Collider.HalfSize; var maxPoint = item.Collider.Position + item.Collider.HalfSize; var top = (minPoint.Y < Position.Y); var bottom = (maxPoint.Y >= Position.Y); var left = (minPoint.X < Position.X); var right = (maxPoint.X >= Position.X); if (top && right) { _childNodes[0].Add(item); } if (bottom && right) { _childNodes[1].Add(item); } if (bottom && left) { _childNodes[2].Add(item); } if (top && left) { _childNodes[3].Add(item); } }
public Body(Layer layer, Vector2 position) : base(layer) { ICollider collider; if (_r.Next(2) == 0) { collider = new RectangleCollider( position, new Vector2(_r.Next(32, 64), _r.Next(32, 64)) / 2f ); } else { collider = new CircleCollider( position, _r.Next(16, 48) / 2f ); } AddComponent(new CPosition(position)); var phy = new CPhysics(1); phy.Collider = collider; AddComponent(phy); }
public void Add(CPhysics item) { if (IsLeaf) { if (_reserved) { _reserved = false; _owner.Leaves.Add(this); } if (item.Immovable) { _immovableItems.Add(item); } else { _items.Add(item); } if ((ItemsCount + ImmovableItemsCount) > _itemLimit && _depth < _depthLimit) { Split(); } } else { AddToChildren(item); } }
public void OnStart() { ocuMouse = GetScript <OcuMouse>(Common.GetSurveillancePlayerMouse()); player = Common.GetStealthPlayer(); playerScript = GetScript <FirstPersonPlayer>(player); camera = Common.GetStealthPlayerCamera(); cameraCam = Common.GetSurveillancePlayerStaticCameraCam(); camScript = GetScript <CameraCam>(cameraCam); camRotLimitScript = GetScript <CameraRotationLimit>(gameObject); heldObjectPosition = GameObject.GetGameObjectByName("HeldObjectPosition"); sound = gameObject.RequireComponent <CSound>(); flyingSoundID = sound.GetUniqueEvent("CAM_FLIGHT.vente", 2); camPhysics = gameObject.RequireComponent <CPhysics>(); camPhysics.mColliderType = 1; camMesh = gameObject.RequireComponent <CMeshRenderer>(); mInitialScale = (Vector3)gameObject.transform.GetScale(); nonActive = new State(smc, State_NonActive_Enter, State_NonActive_Update, State_NonActive_Exit); flyingTowardsWall = new State(smc, State_FlyTowardsWall_Enter, State_FlyTowardsWall_Update, State_FlyTowardsWall_Exit); activeOnWall = new State(smc, State_ActiveOnWall_Enter, State_ActiveOnWall_Update, State_ActiveOnWall_Exit); flyingBackToPlayer = new State(smc, State_FlyingBackToPlayer_Enter, State_FlyingBackToPlayer_Update, State_FlyingBackToPlayer_Exit); smc.SetState(nonActive); // Initial state }
void InitCar() { foundCar = true; carPhysics = rcCar.RequireComponent<CPhysics>(); carPhysics.mColliderType = 1; currYRotation = rcCar.transform.GetRotation().y; rcCarRigidCom = carPhysics.rigidCom; }
public virtual void OnStart() { gameObject.mLayerMask.AddLayer(LayerMask.Layers.LAYER_NORAYCAST); // Disable Collision trigger stuff triggerPhysics = gameObject.RequireComponent <CPhysics>(); triggerPhysics.mColliderType = 0; // static triggerPhysics.mIsTriggered = true; // Disable collision response // Disable CMeshRenderer triggerMesh = gameObject.RequireComponent <CMeshRenderer>(); triggerMesh.setEnabled(false); }
public void OnCollisionEnter(CollisionData data) { if (smc.GetCurrentState() == flyingTowardsWall && data.collidedObj.GetID() != player.GetID()) { CPhysics phyComp = data.collidedObj.GetComponent <CPhysics>(); if (phyComp != null && !phyComp.mIsTriggered) { Logger.Log("Collided with: " + data.collidedObj.GetName()); OnCollidingAgainstWall(data.collidedObj); hasHitWall = true; } } }
public void Add(CPhysics physics) { var minPoint = ToCellCoordinates(physics.Collider.Position - physics.Collider.HalfSize); var maxPoint = ToCellCoordinates(physics.Collider.Position + physics.Collider.HalfSize); for (var y = minPoint.Y; y <= maxPoint.Y; y += 1) { for (var x = minPoint.X; x <= maxPoint.X; x += 1) { if (InBounds(new Point(x, y))) { _cells[x, y].Add(physics); if (!FilledCells.Contains(_cells[x, y])) { FilledCells.Add(_cells[x, y]); } } } } }
public void OnStart() { if (gameObject.transform.GetParent() != null) { gameObject.transform.SetParent(null); } speedX = 0; speedZ = 0; currSpeed = speedNormal; speedWhenJumped = 0.0f; canJump = true; // playerBox is actually my own gameObject playerBox = gameObject; // GameObject.GetGameObjectByName("PlayerBoxCollider"); playerBoxMesh = playerBox.RequireComponent <CMeshRenderer>(); playerBoxMesh.setEnabled(false); playerCamera = Common.GetStealthPlayerCamera(); playerCamScript = GetScript <FirstPersonCamera>(playerCamera); player = Common.GetStealthPlayerMesh(); anim = player.RequireComponent <CAnimationController>(); anim.mIsPlaying = true; playerPhysics = gameObject.RequireComponent <CPhysics>(); playerPhysics.mColliderType = 1; idle = new State(smc, State_Idle_Enter, State_Idle_Update, State_Idle_Exit); move = new State(smc, State_Move_Enter, State_Move_Update, State_Move_Exit); jump = new State(smc, State_Jump_Enter, State_Jump_Update, State_Jump_Exit); crouch = new State(smc, State_Crouch_Enter, State_Crouch_Update, State_Crouch_Exit); sprinting = new State(smc, State_Sprinting_Enter, State_Sprinting_Update, State_Sprinting_Exit, 0.5f); sprinting.NextState = sprinting; notsprinting = new State(smc, State_NotSprinting_Enter, State_NotSprinting_Update, State_NotSprinting_Exit); smc.SetState(idle); sprint_smc.SetState(notsprinting); footstepID = GetSoundComponent().GetUniqueEvent("P1_FOOTSTEPS.vente", 0); }
int isNormalFrontPositive; // 0-not saved yet, -1 - negative normal is front, 1 - positive normal is front /* * public enum OPENING_DIRECTION * { * OPEN_LEFT = 0, * OPEN_RIGHT, * OPEN_UP, * OPEN_DOWN, * * NUM_OPENING_DIRECTIONS * }; */ public void OnStart() { player = Common.GetStealthPlayer(); doorPhysics = gameObject.RequireComponent <CPhysics>(); mSound = gameObject.RequireComponent <CSound>(); isOpen = false; //openDir = 3;//OPENING_DIRECTION.OPEN_LEFT; initPos = gameObject.transform.position; targetPosVal = 0.0f; currTime = 0.0f; if (timeToFullyOpen == 0.0f) { timeToFullyOpen = 1.0f; } normalDir = gameObject.transform.GetForwardVector(); sideDir = gameObject.transform.GetRightVector(); currNormalDist = 0.0f; isNormalFrontPositive = 0; }
public void OnStart() { player = Common.GetStealthPlayer(); doorPhysics = gameObject.RequireComponent <CPhysics>(); mSound = gameObject.RequireComponent <CSound>(); if (isSingleDoor) { ruDoor = gameObject; } else { uint numChildren = gameObject.transform.GetNumberOfChildren(); if (numChildren >= 2) { for (uint i = 0; i < numChildren; ++i) { GameObject currChild = gameObject.transform.GetChild(i).gameObject; String name = currChild.GetName(); if (ldDoor == null && name == Common.nameForLeftDoor) { ldDoor = currChild; } else if (ruDoor == null && name == Common.nameForRightDoor) { ruDoor = currChild; } } } } isOpen = false; //openDir = 3;//OPENING_DIRECTION.OPEN_LEFT; initPos = gameObject.transform.position; targetPosVal = 0.0f; currTime = 0.0f; if (timeToFullyOpen == 0.0f) { timeToFullyOpen = 1.0f; } normalDir = gameObject.transform.GetForwardVector(); sideDir = gameObject.transform.GetRightVector(); upDir = gameObject.transform.GetUpVector(); if (ruDoor != null) { ruInitPos = ruDoor.transform.position; if (ldDoor != null) { ldInitPos = ldDoor.transform.position; } // normalDir = ruDoor.transform.GetForwardVector(); // sideDir = ruDoor.transform.GetRightVector(); // upDir = ruDoor.transform.GetUpVector(); } currNormalDist = 0.0f; isNormalFrontPositive = 0; if (distToCloseForPlayer <= 0.0f) // if set to 0 or negative, default to open distance { distToCloseForPlayer = distToOpenForPlayer; } }
static void Main(String[] args) { var Begin = new SPoint(0, 0); var End = new SPoint(10, 5); while (!CPhysics.MoveTowards(Begin, End, 0.5f)) { Console.WriteLine(Begin.X + " " + Begin.Y); } Console.WriteLine(Begin.X + " " + Begin.Y); return; var MyCenter = new SPoint(0.7059453529691696f, 0.95074967547869216f); var TargetCenter = new SPoint(0.69332838119407825f, 0.78701901149100739f); var Vel0 = new SPoint(0.19000000000000197f, -0.38262210845947314f); var Theta0 = Math.Atan2(Vel0.Y, Vel0.X); // My Scalar var Scalar = Vel0.GetScalar(); // Get Me To Target Vector var LinkVector = TargetCenter.GetSub(MyCenter); // 나의 속도벡터를 나와 대상을 연결한 직선과 나란한 성분A와 A와 수직이 B를 구하고 // A, B의 X,Y 성분을 구하고, B-A 를 구하면 이것이 BalloonFight 의 충돌후의 내 Vector var LinkTheta = CBase.ThetaOfTwoVectors(LinkVector, Vel0); var ScalarA = Mathf.Abs(Mathf.Cos(LinkTheta) * Scalar); var ThetaA = Mathf.Atan2(LinkVector.Y, LinkVector.X); var VecA = new SPoint(Mathf.Cos(ThetaA) * ScalarA, Mathf.Sin(ThetaA) * ScalarA); var ScalarB = Mathf.Abs(Mathf.Sin(LinkTheta) * Scalar); var ThetaB = ThetaA - (Mathf.PI * 0.5f); var VecB = new SPoint(Mathf.Cos(ThetaB) * ScalarB, Mathf.Sin(ThetaB) * ScalarB); var BouncedVec = VecB.GetSub(VecA); Console.WriteLine(VecA.X + " " + VecA.Y); Console.WriteLine(VecB.X + " " + VecB.Y); Console.WriteLine(BouncedVec.X + " " + BouncedVec.Y); return; if (CPhysics.IsOverlappedRectRect(new SRect(0.0f, 1.0f, 0.0f, 1.0f), new SRect(1.0f, 3.0f, 0.0f, 1.0f))) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } return; var CollisionInfo = new SCollisionInfo(); if (CPhysics.IsCollidedRectRect2(new SRect(0.0f, 2.0f, 0.0f, 1.0f), new SRect(1.0f, 3.0f, 0.0f, 1.0f), new SPoint(1.0f, 0.0f), new SPoint(0.0f, 0.0f), CollisionInfo)) { Console.WriteLine("true" + CollisionInfo.Time); } else { Console.WriteLine("false" + CollisionInfo.Time); } SPoint p = new SPoint(0.00000001f, 0.0f); SLine l = new SLine(new SPoint(0.0f, 1.0f), new SPoint(2.0f, 1.0f)); var o = CBase.SymmetryPoint(p, l); Console.WriteLine(o.X + " " + o.Y); }
public void OnStart() { oldPos = gameObject.transform.position; playerPhysics = gameObject.RequireComponent <CPhysics>(); }
public void Add(CPhysics item) { _root.Add(item); Count += 1; }
public void OnStart() { Camcphy = gameObject.RequireComponent <CPhysics>(); bcc = gameObject.RequireComponent <CMeshColliderComponent>(); //Camcphy.mIsDynamic = true; }