コード例 #1
0
 private void Update()
 {
     for (int index = this.mStates.Count - 1; index >= 0; --index)
     {
         YuremonoInstance.TargetState mState = this.mStates[index];
         if (mState.IsValid)
         {
             mState.Transform.set_localRotation(mState.BaseRotation);
         }
     }
 }
コード例 #2
0
    private void LateUpdate()
    {
        this.SkirtLateUpdate();
        Vector3 lossyScale = ((Component)this).get_transform().get_lossyScale();
        float   scale      = (float)(((double)Mathf.Abs((float)lossyScale.x) + (double)Mathf.Abs((float)lossyScale.y) + (double)Mathf.Abs((float)lossyScale.z)) / 3.0);
        Vector3 vector3_1  = Vector3.op_Multiply(Physics.get_gravity(), Time.get_deltaTime());

        for (int index = this.mStates.Count - 1; index >= 0; --index)
        {
            YuremonoInstance.TargetState mState = this.mStates[index];
            if (mState.IsValid)
            {
                Vector3 vector3_2 = Vector3.op_Addition(mState.Transform.get_position(), Vector3.op_Multiply(Vector3.op_Multiply(Vector3.get_down(), mState.Param.Length), scale));
                Vector3 vector3_3 = mState.CalcScaledBaseTailPos(scale);
                mState.DesiredTailPos = Vector3.Lerp(vector3_3, vector3_2, mState.Param.Kinematic);
                YuremonoInstance.TargetState targetState1 = mState;
                targetState1.Velocity = Vector3.op_Multiply(targetState1.Velocity, (float)(1.0 - (double)mState.Param.Damping * (double)Time.get_deltaTime()));
                Vector3 vector3_4 = YuremonoInstance.CalcConstrainedPos(mState.TailPos, mState.Transform.get_position(), mState.Param.Length * scale);
                Vector3 vector3_5 = Vector3.op_Subtraction(mState.DesiredTailPos, vector3_4);
                Vector3 vector3_6 = Vector3.op_Addition(mState.Velocity, Vector3.op_Multiply(Vector3.op_Multiply(vector3_5, Time.get_deltaTime()), mState.Param.Acceleration));
                mState.Velocity = vector3_6;
                YuremonoInstance.TargetState targetState2 = mState;
                targetState2.TailPos = Vector3.op_Addition(targetState2.TailPos, Vector3.op_Addition(Vector3.op_Multiply(mState.Velocity, Time.get_deltaTime()), Vector3.op_Multiply(vector3_1, mState.Param.Gravity)));
                mState.TailPos       = YuremonoInstance.CalcConstrainedPos(mState.TailPos, mState.Transform.get_position(), mState.Param.Length * scale);
                if ((double)mState.Param.AngularLimit > 0.0)
                {
                    Vector3 vector3_7 = Vector3.op_Subtraction(mState.CalcScaledBaseTailPos(scale), mState.Transform.get_position());
                    Vector3 vector3_8 = Vector3.op_Subtraction(mState.TailPos, mState.Transform.get_position());
                    if ((double)Vector3.Angle(vector3_7, vector3_8) >= (double)mState.Param.AngularLimit)
                    {
                        Vector3 vector3_9 = Vector3.Cross(vector3_7, vector3_8);
                        // ISSUE: explicit reference operation
                        Vector3 normalized = ((Vector3)@vector3_9).get_normalized();
                        Vector3 vector3_10 = Vector3.Cross(normalized, vector3_7);
                        // ISSUE: explicit reference operation
                        float num = (double)Vector3.Dot(((Vector3)@vector3_10).get_normalized(), vector3_8) < 0.0 ? -mState.Param.AngularLimit : mState.Param.AngularLimit;
                        // ISSUE: explicit reference operation
                        // ISSUE: explicit reference operation
                        mState.TailPos  = Vector3.op_Addition(Vector3.op_Multiply(Quaternion.op_Multiply(Quaternion.AngleAxis(num, normalized), ((Vector3)@vector3_7).get_normalized()), ((Vector3)@vector3_8).get_magnitude()), mState.Transform.get_position());
                        mState.Velocity = Vector3.op_Subtraction(mState.DesiredTailPos, mState.TailPos);
                    }
                }
                Quaternion rotation = Quaternion.FromToRotation(Vector3.op_Subtraction(mState.CurrentTailPos, mState.Transform.get_position()), Vector3.op_Subtraction(mState.TailPos, mState.Transform.get_position()));
                mState.Transform.set_rotation(Quaternion.op_Multiply(rotation, mState.Transform.get_rotation()));
            }
        }
    }
コード例 #3
0
    public void Setup()
    {
        this.Reset();
        this.mStates.Clear();
        if (Object.op_Equality((Object)this.Param, (Object)null))
        {
            return;
        }
        Transform transform = ((Component)this).get_transform();

        for (int index = this.Param.Targets.Length - 1; index >= 0; --index)
        {
            Transform childRecursively = GameUtility.findChildRecursively(transform, this.Param.Targets[index].TargetName);
            if (Object.op_Equality((Object)childRecursively, (Object)null))
            {
                Debug.LogWarning((object)("Target '" + this.Param.Targets[index].TargetName + "' not found."));
            }
            else
            {
                YuremonoInstance.TargetState targetState = new YuremonoInstance.TargetState();
                targetState.Transform      = childRecursively;
                targetState.Param          = this.Param.Targets[index];
                targetState.BaseRotation   = targetState.Transform.get_localRotation();
                targetState.Forward        = YuremonoInstance.mAxisToVector[(int)targetState.Param.ForwardAxis];
                targetState.TailPos        = targetState.CurrentTailPos;
                targetState.DesiredTailPos = targetState.TailPos;
                this.mStates.Add(targetState);
            }
        }
        for (int index1 = 0; index1 < this.mStates.Count; ++index1)
        {
            for (int index2 = 0; index2 < this.mStates.Count; ++index2)
            {
                if (index1 != index2 && this.mStates[index1].Transform.IsChildOf(this.mStates[index2].Transform))
                {
                    YuremonoInstance.TargetState mState = this.mStates[index2];
                    this.mStates[index2] = this.mStates[index1];
                    this.mStates[index1] = mState;
                }
            }
        }
    }