Пример #1
0
 private bool RetrieveSubstancePreview(Matrix4x4 trs, SubstanceSet subSet, PlayerSubstanceColliderType colliderType, Rect localRect, bool noTouchOnTriggers = false)
 {
     SubstanceManager.RetrieveSubstances(
         trs.Multiply(localRect),
         subSet,
         new PlayerSubstanceFilter {
         ColliderType = colliderType
     },
         groundLayers,
         out bool touch,
         noTouchOnTriggers);
     return(touch);
 }
Пример #2
0
        private void Awake()
        {
            Stats        = defaultStats.Clone();
            SubstanceSet = new SubstanceSet();

            effectsController = GetComponent <EffectsController>();

            stateMachine = new PlayerStateMachine(GetComponent <PlayerLSM>());
            stateMachine.OnStateChanged += OnPlayerStateChanged;

            playerColliders.Initialize(this, stateMachine);

            localScale = transform.localScale;

            //Debug.Log("PlayerController IsGroundedHash: " + PlayerLSM.IsGroundedHash + " AnimHash " + Animator.StringToHash("IsGrounded"));
            //GetComponent<Animator>().SetBool(Animator.StringToHash("IsGrounded"), true);
            //inputMaster.Enable();
        }
Пример #3
0
        internal void OnEnable()
        {
            data = Resources.Load <LocoEditorRepository>("LocoEditorRepository");
            if (data == null)
            {
                Debug.Log("No LocoEditorRepository found");
                return;
            }

            stateMachine = new PlayerStateMachine(null);
            substanceSet = new SubstanceSet();
            if (data.playerController == null)
            {
                Debug.Log("No Player prefab assignet to LocoEditorRepository");
                return;
            }
            playerController = data.playerController;
            playerColliders  = playerController.GetComponentInChildren <PlayerColliders>();

            SceneView.duringSceneGui += OnSceneGUI;
        }
Пример #4
0
        public PlayerStats GetStatePreview(Vector3 position, SubstanceSet prevSubSet, PlayerStateMachine stateMachine, PlayerController parent, out Rect mainColliderRect, out bool isTouchingClimbWallLeft)
        {
            PlayerStats prevStats = parent.defaultStats.Clone();
            Matrix4x4   trs       = Matrix4x4.Translate(position);


            RetrieveSubstancePreview(trs, prevSubSet, PlayerSubstanceColliderType.Ladders, climbLadderTouchRect);

            bool IsTouchingClimbWallRight = RetrieveSubstancePreview(trs, prevSubSet, PlayerSubstanceColliderType.Sides, rightSideTouchRect, true);

            isTouchingClimbWallLeft          = RetrieveSubstancePreview(trs, prevSubSet, PlayerSubstanceColliderType.Sides, InvertOnX(rightSideTouchRect), true);
            stateMachine.IsTouchingClimbWall = isTouchingClimbWallLeft || IsTouchingClimbWallRight;

            RetrieveSubstancePreview(trs, prevSubSet, PlayerSubstanceColliderType.Feet, feetTouchRect);
            stateMachine.IsGrounded = IsTouchingLayer(trs, feetTouchRect, groundLayers);

            RetrieveSubstancePreview(trs, prevSubSet, PlayerSubstanceColliderType.Main, GetColliderRect(mainCollider));

            stateMachine.IsHeadObstructed = RetrieveSubstancePreview(trs, prevSubSet, PlayerSubstanceColliderType.Head, headTouchRect, true);


            /* Activate queried substances */
            prevSubSet.ExecuteQuery();

            /* Recieve data */
            prevSubSet.RecieveDataAndReset(prevStats);


            /* Update internal values */
            stateMachine.IsTouchingClimbLadder     = prevStats.IsLadder;
            stateMachine.IsFeetTouchingClimbLadder = prevStats.IsFeetLadder;

            stateMachine.IsDead = prevStats.IsDamage || IsTouchingLayer(trs, GetColliderRect(mainCollider), hazardsLayers); // if touching hazard

            mainColliderRect = trs.Multiply(GetColliderRect(mainCollider));
            return(prevStats);
        }
Пример #5
0
 private void InitializeCollections()
 {
     _substances = new SubstanceSet(this);
 }