public override void Attach(Item item) { Detach(item); item.ScaleChanged += Item_ScaleChanged; item.RotationChanged += Item_RotationChanged; item.PositionChanged += Item_PositionChanged; }
public override void Render(Item item, Effect shader) { Mesh.Transform = Matrix.Scaling(Scale) * Matrix.RotationYawPitchRoll(Rotation.Y, Rotation.X, Rotation.Z) * Matrix.Translation(Position); base.Render(item, shader); }
protected virtual void Item_RotationChanged(Item item) { Rotation = item.Rotation; RotationMatrix = item.RotationMatrix; }
protected virtual void Item_PositionChanged(Item item) { Position = item.Position; }
public override void Detach(Item item) { item.ScaleChanged -= Item_ScaleChanged; item.RotationChanged -= Item_RotationChanged; item.PositionChanged -= Item_PositionChanged; }
protected override void ItemRotationChanged(Item item) { base.ItemRotationChanged(item); UpdateTranslation(); Animation.RotationMatrix *= _RotationMatrixRelativ; }
protected override void Item_ScaleChanged(Item item) { base.Item_ScaleChanged(item); UpdateTranslation(); }
protected override void Item_ScaleChanged(Item item) { }
public override void Detach(Item item) { }
public override void Attach(Item item) { }
protected void UpdateTranslation(Item item) { _TranslationCurrent = Vector3.TransformCoordinate(Translation.MemberwiseMult(_ItemScale), RotationMatrix); Position = item.Position + _TranslationCurrent; }
protected override void Item_ScaleChanged(Item item) { Scale = ScaleFactor.MemberwiseMult(_ItemScale = item.Scale); UpdateTranslation(item); }
protected override void Item_RotationChanged(Item item) { base.Item_RotationChanged(item); UpdateTranslation(item); }
protected override void Item_PositionChanged(Item item) { Position = item.Position + _TranslationCurrent; }
protected virtual void Item_ScaleChanged(Item item) { Scale = item.Scale; }
protected override void Item_PositionChanged(Item item) { }
public override void Render(Item item, Effect shader) { Mesh.Transform = item.RenderMatrix; base.Render(item, shader); }
protected override void Item_PositionChanged(Item item) { base.Item_PositionChanged(item); Obb.Center += _TranslationCurrent; }
protected override void Item_RotationChanged(Item item) { UpdateTranslation(); }
protected override void Item_RotationChanged(Item item) { }
protected override void ItemPositionChanged(Item item) { base.ItemPositionChanged(item); if (Animation != null) Animation.Position += _TranslationCurrent; }