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); }
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); } }