Esempio n. 1
0
    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;
        }
    }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
    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
    }
Esempio n. 6
0
    void InitCar()
    {
        foundCar = true;
        carPhysics = rcCar.RequireComponent<CPhysics>();
        carPhysics.mColliderType = 1;

        currYRotation = rcCar.transform.GetRotation().y;

        rcCarRigidCom = carPhysics.rigidCom;
    }
Esempio n. 7
0
    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);
    }
Esempio n. 8
0
    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;
            }
        }
    }
Esempio n. 9
0
        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);
    }
Esempio n. 11
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;
    }
Esempio n. 12
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;
        }
    }
Esempio n. 13
0
        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>();
    }
Esempio n. 15
0
 public void Add(CPhysics item)
 {
     _root.Add(item);
     Count += 1;
 }
Esempio n. 16
0
 public void OnStart()
 {
     Camcphy = gameObject.RequireComponent <CPhysics>();
     bcc     = gameObject.RequireComponent <CMeshColliderComponent>();
     //Camcphy.mIsDynamic = true;
 }