/// <summary> /// Updates values of this instance to values taken from parameter instance. /// </summary> /// <param name="Model"></param> /// <param name="RaiseChangedEvent"></param> public override void UpdateFromModel(ObjectUpdate Model, bool RaiseChangedEvent) { base.UpdateFromModel(Model, RaiseChangedEvent); if (RaiseChangedEvent) { OverlayFileRID = Model.OverlayFileRID; NameRID = Model.NameRID; Flags.UpdateFromModel(Model.Flags, RaiseChangedEvent); LightingInfo.UpdateFromModel(Model.LightingInfo, RaiseChangedEvent); FirstAnimationType = Model.FirstAnimationType; ColorTranslation = Model.ColorTranslation; Effect = Model.Effect; if (Animation != null) { Animation.PropertyChanged -= OnAnimationPropertyChanged; } Animation = Model.Animation; Animation.PropertyChanged += OnAnimationPropertyChanged; subOverlays.Clear(); subOverlays.AddRange(Model.SubOverlays); Name = Model.Name; OverlayFile = Model.OverlayFile; Resource = Model.Resource; } else { overlayFileRID = Model.OverlayFileRID; nameRID = Model.NameRID; Flags.UpdateFromModel(Model.Flags, RaiseChangedEvent); LightingInfo.UpdateFromModel(Model.LightingInfo, RaiseChangedEvent); firstAnimationType = Model.FirstAnimationType; colorTranslation = Model.ColorTranslation; effect = Model.Effect; if (animation != null) { animation.PropertyChanged -= OnAnimationPropertyChanged; } animation = Model.Animation; animation.PropertyChanged += OnAnimationPropertyChanged; subOverlays.Clear(); subOverlays.AddRange(Model.SubOverlays); name = Model.Name; overlayFile = Model.OverlayFile; resource = Model.Resource; } // appearance update ProcessAppearance(true); }
public override int ReadFrom(byte[] Buffer, int StartIndex = 0) { int cursor = StartIndex; cursor += base.ReadFrom(Buffer, cursor); UpdatedObject = new ObjectUpdate(Buffer, cursor); cursor += UpdatedObject.ByteLength; return cursor - StartIndex; }
/// <summary> /// Processes the animations of the objects, /// call regularly in threadloop. /// May raise AppearanceChanged event. /// </summary> /// <param name="Tick"></param> /// <param name="Span"></param> public virtual void Tick(double Tick, double Span) { // apply next ObjectUpdate if there is one if (NextUpdate != null) { UpdateFromModel(NextUpdate, true); NextUpdate = null; } // update animation Animation.Tick(Tick, Span); // update suboverlay animations foreach (SubOverlay subOverlay in SubOverlays) { subOverlay.Animation.Tick(Tick, Span); } // possibly update appearancehash and raise event ProcessAppearance(); }
/// <summary> /// Updates values of this instance to values taken from parameter instance. /// </summary> /// <param name="Model"></param> /// <param name="RaiseChangedEvent"></param> public override void UpdateFromModel(ObjectUpdate Model, bool RaiseChangedEvent) { base.UpdateFromModel(Model, RaiseChangedEvent); if (RaiseChangedEvent) { OverlayFileRID = Model.OverlayFileRID; NameRID = Model.NameRID; Flags.UpdateFromModel(Model.Flags, RaiseChangedEvent); LightFlags = Model.LightFlags; LightIntensity = Model.LightIntensity; LightColor = Model.LightColor; FirstAnimationType = Model.FirstAnimationType; ColorTranslation = Model.ColorTranslation; Effect = Model.Effect; if (Animation != null) Animation.PropertyChanged -= OnAnimationPropertyChanged; Animation = Model.Animation; Animation.PropertyChanged += OnAnimationPropertyChanged; subOverlays.Clear(); subOverlays.AddRange(Model.SubOverlays); Name = Model.Name; OverlayFile = Model.OverlayFile; Resource = Model.Resource; } else { overlayFileRID = Model.OverlayFileRID; nameRID = Model.NameRID; Flags.UpdateFromModel(Model.Flags, RaiseChangedEvent); lightFlags = Model.LightFlags; lightIntensity = Model.LightIntensity; lightColor = Model.LightColor; firstAnimationType = Model.FirstAnimationType; colorTranslation = Model.ColorTranslation; effect = Model.Effect; if (animation != null) animation.PropertyChanged -= OnAnimationPropertyChanged; animation = Model.Animation; animation.PropertyChanged += OnAnimationPropertyChanged; subOverlays.Clear(); subOverlays.AddRange(Model.SubOverlays); name = Model.Name; overlayFile = Model.OverlayFile; resource = Model.Resource; } // appearance update ProcessAppearance(true); }
public override void UpdateFromModel(ObjectUpdate Model, bool RaiseChangedEvent) { base.UpdateFromModel(Model, RaiseChangedEvent); if (RaiseChangedEvent) { MotionFirstAnimationType = Model.MotionFirstAnimationType; MotionColorTranslation = Model.MotionColorTranslation; MotionEffect = Model.MotionEffect; if (MotionAnimation != null) MotionAnimation.PropertyChanged -= OnMotionAnimationPropertyChanged; MotionAnimation = Model.MotionAnimation; MotionAnimation.PropertyChanged += OnMotionAnimationPropertyChanged; MotionSubOverlays.Clear(); MotionSubOverlays.AddRange(Model.MotionSubOverlays); } else { motionFirstAnimationType = Model.MotionFirstAnimationType; motionColorTranslation = Model.MotionColorTranslation; motionEffect = Model.MotionEffect; if (motionAnimation != null) motionAnimation.PropertyChanged -= OnMotionAnimationPropertyChanged; motionAnimation = Model.MotionAnimation; motionAnimation.PropertyChanged += OnMotionAnimationPropertyChanged; foreach (SubOverlay obj in motionSubOverlays) obj.PropertyChanged -= OnMotionSubOverlayPropertyChanged; motionSubOverlays.Clear(); motionSubOverlays.AddRange(Model.MotionSubOverlays); } // update appearance ProcessAppearance(true); }
public ChangeMessage(ObjectUpdate UpdatedObject) : base(MessageTypeGameMode.Change) { this.UpdatedObject = UpdatedObject; }
public override unsafe void ReadFrom(ref byte* Buffer) { base.ReadFrom(ref Buffer); UpdatedObject = new ObjectUpdate(ref Buffer); }