Example #1
0
        public static void ExpressionsInspector(FaceTarget faceTarget)
        {
            EditorGUILayout.BeginHorizontal();
            showExpressions = EditorGUILayout.Foldout(showExpressions, "Expression", true);

            EditorGUI.indentLevel++;
            string[] poseNames = faceTarget.poseMixer.GetPoseNames();
            int      poseIx    = EditorGUILayout.Popup(faceTarget.pose, poseNames);

            if (poseIx != faceTarget.pose)
            {
                faceTarget.pose = poseIx;
                faceTarget.poseMixer.SetPoseValue(poseIx);
            }
            EditorGUI.indentLevel--;
            EditorGUILayout.EndHorizontal();

            if (showExpressions)
            {
                EditorGUI.indentLevel++;
                Pose_Editor.PoseMixerInspector(faceTarget.poseMixer, faceTarget.headTarget.humanoid);
                EditorGUI.indentLevel--;
            }

            if (!Application.isPlaying)
            {
                faceTarget.poseMixer.ShowPose(faceTarget.headTarget.humanoid);
                faceTarget.UpdateMovements();
                SceneView.RepaintAll();
            }
        }
Example #2
0
        public static void ConfigurationInspector(FaceTarget faceTarget)
        {
            HumanoidControl humanoid = faceTarget.headTarget.humanoid;

            SkinnedMeshRenderer[] avatarMeshes = HeadTarget.FindAvatarMeshes(humanoid);
            string[] avatarMeshNames           = HeadTarget.DistillAvatarMeshNames(avatarMeshes);
            int      meshWithBlendshapes       = HeadTarget.FindBlendshapemesh(avatarMeshes, faceTarget.headTarget.smRenderer);//HeadTarget.FindMeshWithBlendshapes(avatarMeshes);

            meshWithBlendshapes = EditorGUILayout.Popup("Head Mesh", meshWithBlendshapes, avatarMeshNames);
            string[] blendshapes;
            if (meshWithBlendshapes < avatarMeshes.Length)
            {
                faceTarget.headTarget.smRenderer = avatarMeshes[meshWithBlendshapes];
                blendshapes = HeadTarget.GetBlendshapes(avatarMeshes[meshWithBlendshapes]);
            }
            else
            {
                blendshapes = new string[0];
            }

            EyeBrowsInspector(faceTarget);
            EyesInspector(faceTarget, blendshapes);
            CheeksInspector(faceTarget);
            NoseInspector(faceTarget);
            MouthInspector(faceTarget.mouth);
            faceTarget.jaw.bone.transform = (Transform)EditorGUILayout.ObjectField("Jaw", faceTarget.jaw.bone.transform, typeof(Transform), true);
        }
Example #3
0
        public static void Update(FaceTarget faceTarget)
        {
            if (faceTarget == null)
            {
                return;
            }

            if (Application.isPlaying)
            {
                faceTarget.focusPoint = faceTarget.faceMovements.DetemineFocusPoint(faceTarget.localGazeDirection, out faceTarget.focusObject);
            }

            faceTarget.faceMovements.UpdateCheeks(faceTarget);
            faceTarget.faceMovements.UpdateNose(faceTarget);

            faceTarget.faceMovements.UpdateJaw(faceTarget);
            faceTarget.faceMovements.UpdateMouth(faceTarget);

            if (faceTarget.faceMovements.leftEyeMovements != null)
            {
                faceTarget.faceMovements.leftEyeMovements.Update();
            }
            if (faceTarget.faceMovements.rightEyeMovements != null)
            {
                faceTarget.faceMovements.rightEyeMovements.Update();
            }

            faceTarget.faceMovements.UpdateEyeBrow(faceTarget, faceTarget.leftBrow, faceTarget.leftEye);
            faceTarget.faceMovements.UpdateEyeBrow(faceTarget, faceTarget.rightBrow, faceTarget.rightEye);
        }
Example #4
0
        private void UpdateFacePoint(FaceTarget faceTarget, HumanoidTarget.TargetedBone faceBone)
        {
            if (faceBone.bone.transform == null)
            {
                return;
            }

            HumanoidTarget.TargetedBone parentBone;
            Quaternion parentRotation;

            if (faceBone.target.transform.parent == faceTarget.jaw.target.transform && faceTarget.jaw.bone.transform != null)
            {
                parentBone     = faceTarget.jaw;
                parentRotation = faceTarget.jaw.bone.targetRotation;
            }
            else
            {
                parentBone     = faceTarget.headTarget.head;
                parentRotation = faceTarget.headTarget.head.bone.targetRotation;
            }

            Vector3 localPosition = parentBone.target.transform.InverseTransformPoint(faceBone.target.transform.position);

            faceBone.bone.transform.position = parentBone.bone.transform.position + parentBone.bone.targetRotation * localPosition;

            Quaternion localRotation = parentBone.bone.targetRotation * faceBone.target.transform.localRotation;

            faceBone.bone.transform.rotation = localRotation * faceBone.target.toBoneRotation;

            //Quaternion jawRotationOnParent = parentRotation * faceBone.target.transform.localRotation;
            //faceBone.bone.transform.rotation = jawRotationOnParent * faceBone.target.toBoneRotation;
        }
Example #5
0
        private void UpdateMouth(FaceTarget faceTarget)
        {
            Mouth mouth = faceTarget.mouth;

            UpdateFacePoint(faceTarget, mouth.upperLip);

            UpdateFacePoint(faceTarget, mouth.lipLeft);
            UpdateFacePoint(faceTarget, mouth.lipRight);

            UpdateFacePoint(faceTarget, mouth.lowerLip);

            //if (mouth.upperLipLeft.target.confidence.position < 0.1F)
            //    LerpMouthPoint(mouth, mouth.upperLipLeft, mouth.upperLip, mouth.lipLeft, 0.3F);
            //else
            UpdateFacePoint(faceTarget, mouth.upperLipLeft);

            //if (mouth.upperLipRight.target.confidence.position < 0.1F)
            //    LerpMouthPoint(mouth, mouth.upperLipRight, mouth.upperLip, mouth.lipRight, 0.3F);
            //else
            UpdateFacePoint(faceTarget, mouth.upperLipRight);

            //if (mouth.lowerLipLeft.target.confidence.position < 0.1F)
            //    LerpMouthPoint(mouth, mouth.lowerLipLeft, mouth.lowerLip, mouth.lipLeft, 0.3F);
            //else
            UpdateFacePoint(faceTarget, mouth.lowerLipLeft);

            //if (mouth.lowerLipRight.target.confidence.position < 0.1F)
            //    LerpMouthPoint(mouth, mouth.lowerLipRight, mouth.lowerLip, mouth.lipRight, 0.3F);
            //else
            UpdateFacePoint(faceTarget, mouth.lowerLipRight);
        }
Example #6
0
    void Awake()
    {
        core = Core.instance;
        core.SetPlayer(transform);
        playerInput = PlayerInput.instance;

        player = ReInput.players.GetPlayer(playerID);
        characterController = GetComponent <CharacterController>();
        rb = GetComponent <Rigidbody>();

        turn          = new Turn(this);
        faceTarget    = new FaceTarget(this, inputLibrary.Left_Shoulder);
        move          = new Move(this);
        strafing      = new Strafing(this, inputLibrary.Left_Trigger);
        customGravity = new CustomGravity(this);
        groundedCheck = new GroundedCheck(this);
        edgeCheck     = new EdgeCheck(this);
        jump          = new Jump(this, inputLibrary.A);
        dash          = new Dash(this, inputLibrary.Right_Shoulder);
        attackFast    = new Attack(this, inputLibrary.X, playerProfile.attack);
        attackHeavy   = new Attack(this, inputLibrary.Y, playerProfile.attackHeavy);
        attackFeint   = new Attack(this, inputLibrary.B, playerProfile.attackFeint);

        // AnimationControl should be instantiated last to enable
        // connections to former components
        //animationControl = new AnimationControl(this, move);
    }
Example #7
0
        public HeadTarget()
        {
            neck = new TargetedNeckBone(this);
            head = new TargetedHeadBone(this);
#if hFACE
            face = new FaceTarget(this);
#endif
        }
Example #8
0
 public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     firedThisRun = false;
     if (faceTarget == null)
     {
         faceTarget = animator.GetComponent <FaceTarget>();
     }
 }
Example #9
0
        public EyeTarget(FaceTarget face, bool isLeft)
        {
            this.face       = face;
            this.headTarget = face.headTarget;
            this.isLeft     = isLeft;

            boneId          = isLeft ? Bone.LeftEye : Bone.RightEye;
            upperLid.boneId = isLeft ? Bone.LeftUpperLid : Bone.RightUpperLid;
            lowerLid.boneId = isLeft ? Bone.LeftLowerLid : Bone.RightLowerLid;
        }
Example #10
0
        private void UpdateNose(FaceTarget faceTarget)
        {
            UpdateFacePoint(faceTarget, faceTarget.nose.top);

            UpdateFacePoint(faceTarget, faceTarget.nose.tip);

            UpdateFacePoint(faceTarget, faceTarget.nose.bottomLeft);
            UpdateFacePoint(faceTarget, faceTarget.nose.bottom);
            UpdateFacePoint(faceTarget, faceTarget.nose.bottomRight);
        }
        protected virtual void UpdateEyeBrows(FaceTarget face)
        {
            face.leftBrow.outer.target.transform.localPosition  = HumanoidTarget.ToVector3(face.leftBrow.outer.target.position);    // ==  kinectFace.leftBrow.outer.position
            face.leftBrow.center.target.transform.localPosition = HumanoidTarget.ToVector3(face.leftBrow.center.target.position);   // ==  kinectFace.leftBrow.outer.position
            face.leftBrow.inner.target.transform.localPosition  = HumanoidTarget.ToVector3(face.leftBrow.inner.target.position);    // ==  kinectFace.leftBrow.outer.position

            face.rightBrow.outer.target.transform.localPosition  = HumanoidTarget.ToVector3(face.rightBrow.outer.target.position);  // ==  kinectFace.leftBrow.outer.position
            face.rightBrow.center.target.transform.localPosition = HumanoidTarget.ToVector3(face.rightBrow.center.target.position); // ==  kinectFace.leftBrow.outer.position
            face.rightBrow.inner.target.transform.localPosition  = HumanoidTarget.ToVector3(face.rightBrow.inner.target.position);  // ==  kinectFace.leftBrow.outer.position
        }
Example #12
0
 private static void CheeksInspector(FaceTarget faceTarget)
 {
     showCheeks = EditorGUILayout.Foldout(showCheeks, "Cheeck", true);
     if (showCheeks)
     {
         EditorGUI.indentLevel++;
         FaceBoneInspector("Left", faceTarget.leftCheek);
         FaceBoneInspector("Right", faceTarget.rightCheek);
         EditorGUI.indentLevel--;
     }
 }
Example #13
0
        public static void UpdateScene(FaceTarget faceTarget)
        {
            if (Application.isPlaying)
            {
                return;
            }

            Pose_Editor.UpdateScene(faceTarget.headTarget.humanoid, faceTarget, faceTarget.poseMixer, ref selectedBone);

            //faceTarget.UpdateMovements();
        }
Example #14
0
        private void UpdateJaw(FaceTarget faceTarget)
        {
            if (faceTarget.jaw.bone.transform == null)
            {
                return;
            }

            Quaternion jawRotationOnParent = faceTarget.headTarget.head.bone.targetRotation * faceTarget.jaw.target.transform.localRotation;

            faceTarget.jaw.bone.transform.rotation = jawRotationOnParent * faceTarget.jaw.target.toBoneRotation;
        }
Example #15
0
        public void Init(HeadTarget _headTArget, bool _isLeft)
        {
            headTarget = _headTArget;
            face       = headTarget.face;

            isLeft = _isLeft;

            string eyeTargetName = isLeft ? "LeftEye" : "RightEye";

            if (headTarget.head.target.transform != null)
            {
                target.transform = headTarget.head.target.transform.Find(eyeTargetName);
            }
            if (target.transform == null)
            {
                target.transform        = NewTargetTransform(eyeTargetName);
                target.transform.parent = headTarget.head.target.transform;
            }
            RetrieveBone(headTarget.humanoid, isLeft ? HumanBodyBones.LeftEye : HumanBodyBones.RightEye);
            if (bone.transform != null)
            {
                target.transform.position = bone.transform.position;
                target.transform.rotation = headTarget.head.bone.targetRotation; // target.transform.rotation;
            }

            DoMeasurements();

            bone.minAngles = minEyeAngles;
            bone.maxAngles = maxEyeAngles;

            InitEyeLids();

            SkinnedMeshRenderer[] avatarMeshes = HeadTarget.FindAvatarMeshes(headTarget.humanoid);
            if (avatarMeshes != null && avatarMeshes.Length > 0)
            {
                int      meshWithBlendshapes = HeadTarget.FindMeshWithBlendshapes(avatarMeshes);
                string[] blendshapes         = HeadTarget.GetBlendshapes(avatarMeshes[meshWithBlendshapes]);

                if (isLeft)
                {
                    HeadTarget.FindBlendshapeWith(blendshapes, "AU45", "Left", ref headTarget.face.leftEye.blink);
                }
                else
                {
                    HeadTarget.FindBlendshapeWith(blendshapes, "AU45", "Right", ref headTarget.face.rightEye.blink);
                }
            }
        }
Example #16
0
        private static void NoseInspector(FaceTarget faceTarget)
        {
            showNose = EditorGUILayout.Foldout(showNose, "Nose", true);
            if (showNose)
            {
                EditorGUI.indentLevel++;
                FaceBoneInspector("Top", faceTarget.nose.top);

                FaceBoneInspector("Tip", faceTarget.nose.tip);

                FaceBoneInspector("Bottom Left", faceTarget.nose.bottomLeft);
                FaceBoneInspector("Bottom", faceTarget.nose.bottom);
                FaceBoneInspector("Bottom Right", faceTarget.nose.bottomRight);
                EditorGUI.indentLevel--;
            }
        }
Example #17
0
        public DBBaseTDMove GetDBData()
        {
            DBBaseTDMove dbData = new DBBaseTDMove();

            dbData.CurMovePoint      = CurMovePoint;
            dbData.MoveTarget        = !MoveTarget_Unit.IsInv() ? MoveTarget_Unit.ID : Const.INT_Inv;
            dbData.FaceTarget        = !FaceTarget.IsInv() ? FaceTarget.ID : Const.INT_Inv;
            dbData.IsValidMoveTarget = MoveTarget_IsValid;
            dbData.MoveTargetState   = Enum <TState> .Int(MoveTarget_State);

            dbData.MoveTargetPosPreview = MoveTarget_PosPreview.ToVec3();
            dbData.MoveTargetPosReal    = MoveTarget_PosReal.ToVec3();
            dbData.CurMoveState         = Enum <TState> .Int(StateMachine.CurState);

            return(dbData);
        }
Example #18
0
    public void CarTextFacecamera(GameObject car, Transform target)
    {
        GameObject carNameObj = getChildGameObject(car, "CarName");

        if (!carNameObj)
        {
            return;
        }

        FaceTarget ft = carNameObj.GetComponent <FaceTarget>();

        if (!ft)
        {
            return;
        }

        ft.target = target;
    }
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        ft         = animator.GetComponent <FaceTarget>();
        ft.enabled = false;
        Entity e = animator.GetComponent <Entity>();

        if (e != null)
        {
            if ((right && !e.facingRight) || (!right && e.facingRight))
            {
                e.ForceFlip();
            }
        }
        else
        {
            e.transform.localScale = new Vector3(
                right ? 1 : -1,
                e.transform.localScale.y,
                e.transform.localScale.z
                );
        }
    }
Example #20
0
        private static void EyeBrowsInspector(FaceTarget faceTarget)
        {
            showLeftBrow = EditorGUILayout.Foldout(showLeftBrow, "Left Eye Brow", true);
            if (showLeftBrow)
            {
                EditorGUI.indentLevel++;
                FaceBoneInspector("Brow Outer", faceTarget.leftBrow.outer);
                FaceBoneInspector("Brow", faceTarget.leftBrow.center);
                FaceBoneInspector("Brow Inner", faceTarget.leftBrow.inner);
                EditorGUI.indentLevel--;
            }

            showRightBrow = EditorGUILayout.Foldout(showRightBrow, "Right Eye Brow", true);
            if (showRightBrow)
            {
                EditorGUI.indentLevel++;
                FaceBoneInspector("Brow Inner", faceTarget.rightBrow.inner);
                FaceBoneInspector("Brow", faceTarget.rightBrow.center);
                FaceBoneInspector("Brow Outer", faceTarget.rightBrow.outer);
                EditorGUI.indentLevel--;
            }
        }
Example #21
0
        private static void EyesInspector(FaceTarget faceTarget, string[] blendshapes)
        {
            showLeftEye = EditorGUILayout.Foldout(showLeftEye, "Left Eye", true);
            if (showLeftEye)
            {
                EditorGUI.indentLevel++;
                faceTarget.leftEye.upperLid.bone.transform = (Transform)EditorGUILayout.ObjectField("Upper Lid", faceTarget.leftEye.upperLid.bone.transform, typeof(Transform), true);
                faceTarget.leftEye.bone.transform          = (Transform)EditorGUILayout.ObjectField("Eye", faceTarget.leftEye.bone.transform, typeof(Transform), true);
                faceTarget.leftEye.lowerLid.bone.transform = (Transform)EditorGUILayout.ObjectField("Lower Lid", faceTarget.leftEye.lowerLid.bone.transform, typeof(Transform), true);
                leftEyeBlinkProp.intValue = EditorGUILayout.Popup("Eye Closed Blendshape", leftEyeBlinkProp.intValue, blendshapes);
                EditorGUI.indentLevel--;
            }

            showRightEye = EditorGUILayout.Foldout(showRightEye, "Right Eye", true);
            if (showRightEye)
            {
                EditorGUI.indentLevel++;
                faceTarget.rightEye.upperLid.bone.transform = (Transform)EditorGUILayout.ObjectField("Upper Lid", faceTarget.rightEye.upperLid.bone.transform, typeof(Transform), true);
                faceTarget.rightEye.bone.transform          = (Transform)EditorGUILayout.ObjectField("Eye", faceTarget.rightEye.bone.transform, typeof(Transform), true);
                faceTarget.rightEye.lowerLid.bone.transform = (Transform)EditorGUILayout.ObjectField("Lower Lid", faceTarget.rightEye.lowerLid.bone.transform, typeof(Transform), true);
                rightEyeBlinkProp.intValue = EditorGUILayout.Popup("Eye Closed Blendshape", rightEyeBlinkProp.intValue, blendshapes);
                EditorGUI.indentLevel--;
            }
        }
    // Use this for initialization
    void Start()
    {
        eventManager = FindObjectOfType <EventManager>();
        navAgent     = GetComponent <NavMeshAgent>();
        player       = FindObjectOfType <Player>();
        body         = GetComponent <Rigidbody>();
        triggerTag   = "Player";
        m_waypoints.TrimExcess();
        Debug.Log("Start target tag: " + triggerTag);

        animator = GetComponent <Animator>();

        // Detects if eye location is set
        if (!m_eyeLocation)
        {
            Debug.Log("Eye Location is not set");
        }

        // Detects if waypoints are set
        if (m_waypoints.Count < 1)
        {
            Debug.Log("Waypoints are not set");
        }

        //----------------------------------------------------
        // The Attack Sequence

        // Set triggers to turn off
        List <string> offTriggers = new List <string>();

        offTriggers.Add("Search");
        offTriggers.Add("Chase");

        // Set up the attack behaviour
        PlayAnimation attackAnimation = new PlayAnimation();

        attackAnimation.SetParameters(animator, "DeathSequence", offTriggers);

        // Set up condition for the attack sequence
        Triggered attackCondition = new Triggered();

        // Set up attack sequence
        Sequence attackSequence = new Sequence();

        attackSequence.addBehaviour(attackCondition);
        attackSequence.addBehaviour(attackAnimation);

        // ---------------------------------------------------
        // The Drill Sequence

        // Set up the drill condition
        DrillBehaviour drillBehaviour = new DrillBehaviour();

        drillBehaviour.SetParameters(false);

        // Set up drill animation
        PlayAnimation drillAnimation = new PlayAnimation();

        drillAnimation.SetParameters(animator, "DrillSequence", null, onDoorDrilling);

        // Set up drill sequence
        Sequence drillSequence = new Sequence();

        drillSequence.addBehaviour(drillBehaviour);
        //drillSequence.addBehaviour(seekPanel);
        drillSequence.addBehaviour(drillAnimation);

        // ---------------------------------------------------
        // The Rage Sequence

        // Set up the rage condition
        DrillBehaviour rageBehaviour = new DrillBehaviour();

        rageBehaviour.SetParameters(true);

        // Set up rage animation
        PlayAnimation rageAnimation = new PlayAnimation();

        rageAnimation.SetParameters(animator, "RageSequence");

        // Set up rage sequence
        Sequence rageSequence = new Sequence();

        rageSequence.addBehaviour(rageBehaviour);
        rageSequence.addBehaviour(rageAnimation);

        //----------------------------------------------------
        // The Proximity Sequence

        // Set up within range condition for search sequence
        WithinRange withinSearch = new WithinRange();

        withinSearch.SetParameters(player.gameObject, m_searchRange);

        // Set up line of sight condition for search sequence
        LineOfSight inSight = new LineOfSight();

        inSight.SetParameters(player.gameObject, m_sightRange, m_eyeLocation);

        // Set up the close chase behaviour
        SetTargetBehaviour closeChase = new SetTargetBehaviour();

        closeChase.SetParameters(player.gameObject, m_searchSpeed, "CloseChase", onProximityDetection);

        // Set up arm extended animation
        PlayAnimation armExtended = new PlayAnimation();

        armExtended.SetParameters(animator, "ArmExtended");

        // Set up chase sequence
        Sequence closeChaseSequence = new Sequence();

        closeChaseSequence.addBehaviour(withinSearch);
        closeChaseSequence.addBehaviour(inSight);
        closeChaseSequence.addBehaviour(closeChase);
        closeChaseSequence.addBehaviour(armExtended);

        //----------------------------------------------------
        // The Search Sequence

        // Turn towards the player
        FaceTarget facePlayer = new FaceTarget();

        facePlayer.SetParameters(player.gameObject, m_rotationSpeed);

        // Set up arm extended animation
        PlayAnimation searchAnimation = new PlayAnimation();

        searchAnimation.SetParameters(animator, "Search", null, searching);

        // Set up search sequence
        Sequence searchSequence = new Sequence();

        searchSequence.addBehaviour(withinSearch);
        searchSequence.addBehaviour(facePlayer);
        searchSequence.addBehaviour(searchAnimation);

        //----------------------------------------------------
        // The Chase Sequence

        // Set up the chase behaviour
        SetTargetBehaviour chasePlayer = new SetTargetBehaviour();

        chasePlayer.SetParameters(player.gameObject, m_chaseSpeed, "Chase", chasing);

        // Set up within range condition for chase sequence
        WithinRange withinChase = new WithinRange();

        withinChase.SetParameters(player.gameObject, m_sightRange);

        // Set up chase sequence
        Sequence chaseSequence = new Sequence();

        chaseSequence.addBehaviour(withinChase);
        chaseSequence.addBehaviour(inSight);
        chaseSequence.addBehaviour(chasePlayer);

        //----------------------------------------------------
        // The Investigate Sequence

        // Set up alert condition
        AlertCondition alertCondition = new AlertCondition();

        // Set up investigate sequence
        Sequence investigateSequence = new Sequence();

        investigateSequence.addBehaviour(alertCondition);
        investigateSequence.addBehaviour(m_investigateArea);


        //----------------------------------------------------
        // The Patrol Sequence
        // Set up the patrol targets
        Patrol patrolDestination = new Patrol();

        patrolDestination.SetParameters(m_waypoints);

        // Set up the patrol behaviour
        SetTargetBehaviour patrolBehaviour = new SetTargetBehaviour();

        patrolBehaviour.SetParameters(patrolDestination, m_patrolSpeed, "Patrol", patrolling);

        // Look for nearest waypoint then continue with the patrol from there

        //----------------------------------------------------
        // The Main Selector

        // Set up main selector
        Selector mainSelector = new Selector();

        mainSelector.addBehaviour(attackSequence);
        mainSelector.addBehaviour(drillSequence);
        mainSelector.addBehaviour(rageSequence);
        mainSelector.addBehaviour(closeChaseSequence);
        mainSelector.addBehaviour(searchSequence);
        mainSelector.addBehaviour(chaseSequence);
        mainSelector.addBehaviour(investigateSequence);
        mainSelector.addBehaviour(patrolBehaviour);

        // Add all sequences to the behaviour list
        m_behaviours.Add(mainSelector);
    }
Example #23
0
 private void UpdateEyeBrow(FaceTarget faceTarget, EyeBrow brow, EyeTarget eye)
 {
     UpdateFacePoint(faceTarget, brow.outer);
     UpdateFacePoint(faceTarget, brow.center);
     UpdateFacePoint(faceTarget, brow.inner);
 }
Example #24
0
 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     base.OnStateEnter(animator, stateInfo, layerIndex);
     ft         = animator.GetComponent <FaceTarget>();
     ft.enabled = setEnabled;
 }
Example #25
0
 private void UpdateCheeks(FaceTarget faceTarget)
 {
     UpdateFacePoint(faceTarget, faceTarget.leftCheek);
     UpdateFacePoint(faceTarget, faceTarget.rightCheek);
 }
Example #26
0
 private void Awake()
 {
     _rigidBody   = GetComponent <Rigidbody2D>();
     _chasePlayer = GetComponent <ChasePlayer>();
     _faceTarget  = GetComponent <FaceTarget>();
 }
Example #27
0
    // Use this for initialization
    void Start()
    {
        gameObject.tag = "Scarab";
        scarabAudio    = GetComponent <AudioSource> ();
        eventManager   = FindObjectOfType <EventManager>();
        navAgent       = GetComponent <NavMeshAgent>();
        player         = FindObjectOfType <Player>();
        body           = GetComponent <Rigidbody>();
        triggerTag     = "Player";

        m_sphereCollider = GetComponent <SphereCollider>();

        if (!animator)
        {
            animator = GetComponentInChildren <Animator>();
        }
        //m_animator = GetComponent<Animator>();

        //// Setting layers for Dr Leben's parts
        //foreach (Transform child in transform)
        //    child.gameObject.layer = gameObject.layer;

        // ---------------------------------------------------
        // The Death Sequence

        // Set up the
        IsScarabAttacked deathCheck = new IsScarabAttacked();

        Sequence deathSequence = new Sequence();

        deathSequence.addBehaviour(deathCheck);

        //----------------------------------------------------
        // The Attack Sequence

        //// Set up condition for the attack sequence
        //Triggered attackCondition = new Triggered();

        // Set up within range condition for chase sequence
        WithinRange withinAttack = new WithinRange();

        withinAttack.SetParameters(player.gameObject, m_attackRange);

        // Set Up Continue attack condition
        ContinueAttack continueAttackCondition = new ContinueAttack();

        // Set up the attack behaviour
        ScarabAttack attackBehaviour = new ScarabAttack();

        attackBehaviour.SetParameters(player, m_damage, m_attackTimer, m_rotationSpeed, onAttack);

        // Set up line of sight condition for chase sequence
        LineOfSight inSight = new LineOfSight();

        inSight.SetParameters(player.gameObject, m_sightRange, m_eyeLocation);

        //// Set up component check enabled
        //ComponentEnabled navAgentCheck = new ComponentEnabled();
        //navAgentCheck.SetParameters(navMesh);

        // Set up attack sequence
        Sequence attackSequence = new Sequence();

        attackSequence.addBehaviour(continueAttackCondition);
        //attackSequence.addBehaviour(navAgentCheck);
        //attackSequence.addBehaviour(attackCondition);
        attackSequence.addBehaviour(withinAttack);
        attackSequence.addBehaviour(inSight);
        //attackSequence.addBehaviour(facePlayer);
        attackSequence.addBehaviour(attackBehaviour);

        //----------------------------------------------------
        // The Face Target Sequence

        // Set up face target behaviour
        FaceTarget facePlayer = new FaceTarget();

        facePlayer.SetParameters(player.gameObject, m_rotationSpeed);

        // Set up attack sequence
        Sequence faceTargetSequence = new Sequence();

        faceTargetSequence.addBehaviour(continueAttackCondition);
        faceTargetSequence.addBehaviour(withinAttack);
        faceTargetSequence.addBehaviour(facePlayer);

        //----------------------------------------------------
        // The Chase Sequence

        // Set up the chase behaviour
        SetTargetBehaviour chasePlayer = new SetTargetBehaviour();

        chasePlayer.SetParameters(player.gameObject, m_chaseSpeed, "", chasing);

        // Set up within range condition for chase sequence
        WithinRange withinChase = new WithinRange();

        withinChase.SetParameters(player.gameObject, m_chaseRange);

        // Set up chase sequence
        Sequence chaseSequence = new Sequence();

        chaseSequence.addBehaviour(continueAttackCondition);
        //chaseSequence.addBehaviour(navAgentCheck);
        chaseSequence.addBehaviour(withinChase);
        chaseSequence.addBehaviour(chasePlayer);

        //----------------------------------------------------
        // The Wander Sequence
        WanderTarget wanderSetter = new WanderTarget();

        SetTargetBehaviour wanderBehaviour = new SetTargetBehaviour();

        wanderBehaviour.SetParameters(wanderSetter, m_wanderSpeed, "", wandering);

        // Set up wander sequence
        Sequence wanderSequence = new Sequence();

        //wanderSequence.addBehaviour(navAgentCheck);
        wanderSequence.addBehaviour(wanderBehaviour);

        ////----------------------------------------------------
        //// The Attack Selector

        //// Set up main selector
        //Selector attackSelector = new Selector();
        //attackSelector.addBehaviour(attackSequence);
        //attackSelector.addBehaviour(chaseSequence);

        //----------------------------------------------------
        // The Sequence Selector


        // Set up main sequence
        Selector mainSelector = new Selector();

        mainSelector.addBehaviour(deathSequence);
        mainSelector.addBehaviour(attackSequence);
        mainSelector.addBehaviour(chaseSequence);
        mainSelector.addBehaviour(wanderSequence);

        // Add all sequences to the behaviour list
        m_behaviours.Add(mainSelector);

        // correct position so it always sits on navmesh
        NavMeshHit closestHit;

        if (NavMesh.SamplePosition(gameObject.transform.position, out closestHit, 500f, NavMesh.AllAreas))
        {
            gameObject.transform.position = closestHit.position;
        }
        else
        {
            Debug.LogError("Could not find position on NavMesh!");
        }
    }
 private void UpdateEyelids(FaceTarget face)
 {
     face.leftEye.closed  = Mathf.Clamp01(KinectDevice.GetFaceExpression(KinectDevice.FaceExpression.EyeClosedLeft) * 4 - 2.5F);
     face.rightEye.closed = Mathf.Clamp01(KinectDevice.GetFaceExpression(KinectDevice.FaceExpression.EyeClosedRight) * 4 - 2.5F);
 }
Example #29
0
 public static void FocusObjectInspector(FaceTarget faceTarget)
 {
     EditorGUILayout.ObjectField("Focus Object", faceTarget.focusObject, typeof(GameObject), true);
 }
Example #30
0
 private static void InitExpressions(FaceTarget faceTarget)
 {
 }