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); }
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(); }
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; }
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); }
private void InitializeCollections() { _substances = new SubstanceSet(this); }