示例#1
0
 /// <summary>
 /// Constructs a new animation clip object.
 /// </summary>
 public AnimationClip(TimeSpan duration, List<Keyframe> keyframes, int[] affectedBones, XnaScrapId clipId)
     : base(duration,clipId)
 {
     Duration = duration;
     Keyframes = keyframes;
     Affects = affectedBones;
 }
示例#2
0
        public Camera(IDataReader state, RenderManager renderManager)
            : base(state)
        {
            addInterface(typeof(ICamera));
            m_renderManager = renderManager;

            m_renderTargetId = new XnaScrapId(state);
            IRenderTarget renderTarget = m_renderManager.getRenderTarget(m_renderTargetId);
            if (renderTarget != null)
            {
                renderTarget.Cameras.Add(this);
            }
            m_fovy = state.ReadSingle();
            m_near = state.ReadSingle();
            m_far = state.ReadSingle();
            m_aspect = state.ReadSingle();

            float f = m_fovy * (float)Math.PI / 180.0f;

            m_projection = Matrix.CreatePerspectiveFieldOfView(f, m_aspect, m_near, m_far);

            m_viewport = new _Viewport(state);

            m_renderManager.Cameras.Add(new XnaScrapId("ImplementCameraNamingYouJerk!"), this);
        }
示例#3
0
 public ScriptState(IDataReader state)
     : base(state)
 {
     addInterface(typeof(IState));
     m_id.deserialize(state);
     m_enterScriptId = new XnaScrapId(state);
     m_exitScriptId = new XnaScrapId(state);
 }
示例#4
0
文件: State.cs 项目: DelBero/XnaScrap
 public IState transition(XnaScrapId msg)
 {
     if (m_transitions.Keys.Contains(msg))
     {
         return m_transitions[msg];
     }
     return this;
 }
 public RenderTargetCollection(XnaScrapId id, IRenderTarget[] targets)
 {
     m_id = id;
     for (int i = 0; i < 4; ++i)
     {
         if (i < targets.Length)
             Targets[i] = targets[i];
     }
 }
示例#6
0
文件: State.cs 项目: DelBero/XnaScrap
 public bool addTransition(XnaScrapId msg, IState toState)
 {
     if (!m_transitions.Keys.Contains(msg))
     {
         m_transitions.Add(msg, toState);
         return true;
     }
     return false;
 }
示例#7
0
 public override void doHandleMessage(IDataReader msg)
 {
     XnaScrapId msgId = new XnaScrapId(msg);
     if (PrintId == msgId)
     {
         String message = msg.ReadString();
         System.Console.WriteLine(message);
     }
     base.doHandleMessage(msg);
 }
示例#8
0
 public override void doHandleMessage(IDataReader msg)
 {
     XnaScrapId msgId = new XnaScrapId(msg);
     if (msgId.Equals(CHANGE_SCALE_MSG_ID))
     {
         m_scale.X = (float)msg.ReadInt32();
         m_scale.Y = (float)msg.ReadInt32();
         OnChanged();
     }
     base.doHandleMessage(msg);
 }
示例#9
0
 public void doHandleMessage(IDataReader msg)
 {
     XnaScrapId msgId = new XnaScrapId(msg);
     if (msgId == NewActionId)
     {
         XnaScrapId action = new XnaScrapId(msg);
         XnaScrapId actor = new XnaScrapId(msg);
         XnaScrapId target = new XnaScrapId(msg);
         newAction(action,actor,target);
     }
 }
示例#10
0
 public void addStateMachine(XnaScrapId id, StateMachine stateMachine)
 {
     if (!m_stateMachines.Keys.Contains(id))
     {
         m_stateMachines.Add(id, stateMachine);
     }
     else
     {
         // TODO error handling
     }
 }
示例#11
0
 /// <summary>
 /// Add an element to the list of active animations
 /// </summary>
 /// <param name="clipId">The animation to use</param>
 /// <param name="aa">The animation player</param>
 /// <param name="startTime">The starting time (offset) within the animation</param>
 /// <param name="eventHandler">Event handler that is called after each frame</param>
 public void animateMe(XnaScrapId clipId,IAbstractAnimation animationPlayer, TimeSpan startTime,bool loop, AnimationChangedEventHandler eventHandler)
 {
     //AnimationInstance newAnimation = new AnimationInstance(animationPlayer as AbstractAnimation, startTime);
     //newAnimation.Start(clipId);
     //newAnimation.Changed += eventHandler;
     //m_activeAnimations.Add(newAnimation);
     if (animationPlayer is AnimationPlayer)
     {
         AnimationPlayer player = animationPlayer as AnimationPlayer;
         player.Start(clipId, loop);
     }
 }
示例#12
0
 public AbstractCollider(IDataReader state)
     : base(state)
 {
     m_collisionGroupId = new XnaScrapId(state);
     int numCollisionGroups = state.ReadInt32();
     for (int i = 0; i < numCollisionGroups; ++i)
     {
         m_collisionGroupIds.Add( new XnaScrapId(state));
     }
     m_relativePos.X = state.ReadSingle();
     m_relativePos.Y = state.ReadSingle();
     m_relativePos.Z = state.ReadSingle();
 }
示例#13
0
        public AnimationPosition3D(IDataReader state, AnimationService animationService)
            : base(state)
        {
            addInterface(typeof(IPosition3D));

            m_position.X = state.ReadSingle();
            m_position.Y = state.ReadSingle();
            m_position.Z = state.ReadSingle();

            m_animationId = new XnaScrapId(state);
            IAbstractAnimation player = animationService.getAnimation(XnaScrapId.INVALID_ID);

            animationService.animateMe(m_animationId,player, new TimeSpan(0), false, animationChanged);
        }
示例#14
0
 public override void doHandleMessage(IDataReader msg)
 {
     msg.BaseStream.Position = 0;
     XnaScrapId msgId = new XnaScrapId(msg);
     if (msgId == CHANGE_VISIBILITY_MSG_ID)
     {
         Visible = msg.ReadBoolean();
     }
     if (msgId == CHANGE_LAYER_MSG_ID)
     {
         Layer = msg.ReadInt32();
     }
     base.doHandleMessage(msg);
 }
示例#15
0
 public PerformanceSegment addPerformanceMeter(XnaScrapId name, bool autoreset = false)
 {
     PerformanceSegment seg;
     if (!m_timer.Keys.Contains(name))
     {
         seg = new PerformanceSegment(name.ToString());
         m_timer.Add(name,seg);
         if (autoreset)
             m_autoreset.Add(seg);
         return seg;
     }
     else
     {
         throw new Exception();
     }
 }
示例#16
0
 public void playAnimation(XnaScrapId clipId, bool loop)
 {
     AnimationService animService = Owner.Game.Services.GetService(typeof(AnimationService)) as AnimationService;
     if (animService != null)
     {
         animService.animateMe(clipId, m_animation, TimeSpan.Zero,loop, animationChanged);
     }
 }
示例#17
0
 public void setRenderTargetEffect(XnaScrapId id, CBeroEffect effect)
 {
     IRenderTarget renderTarget;
     if (m_renderTargets.TryGetValue(id, out renderTarget))
     {
         renderTarget.Effect = effect;
     }
 }
示例#18
0
 public IRenderTarget getRenderTarget(XnaScrapId id)
 {
     IRenderTarget target;
     if (m_renderTargets.TryGetValue(id, out target))
         return target;
     else
         return null;
 }
示例#19
0
 public void registerCollisionGroup(XnaScrapId id, uint value)
 {
     if (!m_collisionGroups.Keys.Contains(id.ToString()))
     {
         m_collisionGroups.Add(id.ToString(), value);
     }
     else
     {
         // TODO error handling
     }
 }
示例#20
0
 public uint getCollisionGroup(XnaScrapId id)
 {
     if (m_collisionGroups.Keys.Contains(id.ToString()))
     {
         return m_collisionGroups[id.ToString()];
     }
     return 0;
 }
示例#21
0
 public bool registerMacro(XnaScrapId name, IMacro macro)
 {
     if (!m_registeredMacros.Keys.Contains(name))
     {
         m_registeredMacros.Add(name,macro);
         return true;
     }
     return false;
 }
示例#22
0
 public IMacro getMacro(XnaScrapId name)
 {
     IMacro macro = null;
     m_registeredMacros.TryGetValue(name, out macro);
     return macro;
 }
示例#23
0
 public void removeStateMachine(XnaScrapId id)
 {
     if (m_stateMachines.Keys.Contains(id))
     {
         m_stateMachines.Remove(id);
     }
 }
示例#24
0
文件: State.cs 项目: DelBero/XnaScrap
 public bool canTransition(XnaScrapId msg)
 {
     return m_transitions.Keys.Contains(msg);
 }
示例#25
0
 public AbstractAnimationClip(TimeSpan time, XnaScrapId clipId)
 {
     m_time = time;
     m_clipId = clipId;
 }
示例#26
0
 public InputMapping(IDataReader state, Core core)
 {
     m_core = core;
     m_bIsPressed = state.ReadBoolean();
     m_downMsg = new XnaScrapId(state);
     m_upMsg = new XnaScrapId(state);
     m_targetId = new XnaScrapId(state);
     m_message = state.ReadString();
 }
示例#27
0
 public override void Start(XnaScrapId animationId, bool loop)
 {
 }
示例#28
0
 public AnimationValue(TimeSpan time, XnaScrapId animationId)
     : base(time, animationId)
 {
 }
示例#29
0
 private void execute(XnaScrapId msgId)
 {
     if (msgId != XnaScrapId.INVALID_ID)
     {
         Message msg = new Message(msgId);
         msg.Writer.Write(m_message);
         msg.send(m_core.ObjectBuilder, m_targetId);
     }
 }
示例#30
0
 public override void doHandleMessage(IDataReader msg)
 {
     XnaScrapId msgId = new XnaScrapId(msg);
     if (msgId == CHANGE_MODEL_MSG_ID)
     {
         m_modelName = msg.ReadString();
         setModel();
     }
     else if (msgId == CHANGE_MATERIAL_MSG_ID)
     {
         m_materialName = msg.ReadString();
         setMaterial();
     }
     else if (msgId == CHANGE_SCALE_MSG_ID)
     {
         m_scale.X = msg.ReadSingle();
         m_scale.Y = msg.ReadSingle();
         m_scale.Z = msg.ReadSingle();
     }
     base.doHandleMessage(msg);
 }