Example #1
0
        public CameraState GetCameraState()
        {
            if (State == AnimationState.Stopped)
            {
                ResetState();
            }

            if (State != AnimationState.Playing || Elements.Count == 0)
            {
                return(CamState);
            }

            for (int i = 0; i < Elements.Count; i++)
            {
                H3DAnimationElement Elem = Elements[i];

                if (Elem.PrimitiveType == H3DPrimitiveType.Transform)
                {
                    SetStateTransform((H3DAnimTransform)Elem.Content);
                }
                else if (Elem.PrimitiveType == H3DPrimitiveType.Vector3D)
                {
                    H3DAnimVector3D Vector = (H3DAnimVector3D)Elem.Content;

                    switch (Elem.TargetType)
                    {
                    case H3DTargetType.CameraUpVector:     SetVector3(Vector, ref CamState.UpVector);     break;

                    case H3DTargetType.CameraTargetPos:    SetVector3(Vector, ref CamState.Target);       break;

                    case H3DTargetType.CameraViewRotation: SetVector3(Vector, ref CamState.ViewRotation); break;
                    }
                }
                else if (Elem.PrimitiveType == H3DPrimitiveType.Float)
                {
                    H3DFloatKeyFrameGroup Float = ((H3DAnimFloat)Elem.Content).Value;

                    if (!Float.Exists)
                    {
                        continue;
                    }

                    float Value = Float.GetFrameValue(Frame);

                    switch (Elem.TargetType)
                    {
                    case H3DTargetType.CameraZNear: CamState.ZNear = Value; break;

                    case H3DTargetType.CameraZFar:  CamState.ZFar = Value; break;

                    case H3DTargetType.CameraTwist: CamState.Twist = Value; break;
                    }
                }
            }

            return(CamState);
        }
Example #2
0
 private void SetVector3(H3DAnimVector3D Vector, ref Vector3 Target)
 {
     if (Vector.X.Exists)
     {
         Target.X = Vector.X.GetFrameValue(Frame);
     }
     if (Vector.Y.Exists)
     {
         Target.Y = Vector.Y.GetFrameValue(Frame);
     }
     if (Vector.Z.Exists)
     {
         Target.Z = Vector.Z.GetFrameValue(Frame);
     }
 }