public static JObject Serialize(AmbientHitableObject ambientHitableObject) { var retObject = new JObject(); SerializationUtils.SerializeType(type, ref retObject); Serialize(ambientHitableObject, ref retObject); return(retObject); }
public static AmbientHitableObject Deserialize(JObject jObject) { AmbientHitableObject ambientHitableObject = ReflectionUtils.CallPrivateConstructor <AmbientHitableObject>(); Deserialize(ref jObject, ambientHitableObject); ambientHitableObject.Init(); return(ambientHitableObject); }
public static Animation CreateAnimation(AmbientHitableObject ambientHitableObject) { var ambientHitableObjectType = lookup[ambientHitableObject.AmbientHitableObjectType]; var texture = SimulationGame.ContentManager.Load <Texture2D>(ambientHitableObjectType.SpritePath); var frames = new Frame[ambientHitableObjectType.SpritePositions.Length]; for (var i = 0; i < ambientHitableObjectType.SpritePositions.Length; i++) { frames[i] = new Frame(texture, new Rectangle(ambientHitableObjectType.SpritePositions[i], ambientHitableObjectType.SpriteBounds), ambientHitableObjectType.SpriteOrigin.ToPoint(), ambientHitableObjectType.FrameDuration, SpriteEffects.None); } return(new Animation(frames)); }
public static AmbientHitableObject Create(WorldPosition worldPosition, AmbientHitableObjectType ambientHitableObjectType) { AmbientHitableObject ambientHitableObject = new AmbientHitableObject(worldPosition) { AmbientHitableObjectType = ambientHitableObjectType.ID, CustomProperties = ambientHitableObjectType.CustomProperties != null ? (JObject)ambientHitableObjectType.CustomProperties.DeepClone() : null, YPositionDepthOffset = ambientHitableObjectType.YPositionDepthOffset, LiveSpan = ambientHitableObjectType.LiveSpan, }; ambientHitableObject.SetBlocking(ambientHitableObjectType.IsBlocking); ambientHitableObject.SetHitable(ambientHitableObjectType.IsHitable); ambientHitableObject.Init(); return(ambientHitableObject); }
public static void Draw(SpriteBatch spriteBatch, GameTime gameTime, AmbientHitableObject ambientHitableObject) { if (ambientHitableObject is AmbientHitableObject) { var ambientHitableObjectType = AmbientHitableObjectType.lookup[((AmbientHitableObject)ambientHitableObject).AmbientHitableObjectType]; var depth = (ambientHitableObjectType.HasDepth) ? GeometryUtils.GetLayerDepthFromPosition(ambientHitableObject.Position.X, ambientHitableObject.Position.Y + ambientHitableObject.YPositionDepthOffset) : GeometryUtils.GetLayerDepthFromReservedLayer(ReservedDepthLayers.BlockDecoration); if (ambientHitableObjectType.SpritePositions.Length > 1) { if (ambientHitableObject.ObjectAnimation == null) { ambientHitableObject.ObjectAnimation = AmbientHitableObjectType.CreateAnimation(ambientHitableObject); ambientHitableObject.ObjectAnimation.Start(Repeat.Mode.Loop); } ambientHitableObject.ObjectAnimation.Update(gameTime); spriteBatch.Draw(ambientHitableObject.ObjectAnimation, ambientHitableObject.Position.ToVector(), color: Color.White, layerDepth: depth); } else { spriteBatch.Draw(SimulationGame.ContentManager.Load <Texture2D>(ambientHitableObjectType.SpritePath), ambientHitableObject.Position.ToVector(), new Rectangle(ambientHitableObjectType.SpritePositions[0], ambientHitableObjectType.SpriteBounds), Color.White, 0.0f, ambientHitableObjectType.SpriteOrigin, 1.0f, SpriteEffects.None, depth); } if (SimulationGame.IsDebug) { if (ambientHitableObject.IsBlocking()) { SimulationGame.PrimitiveDrawer.Rectangle(ambientHitableObject.BlockingBounds.ToXnaRectangle(), Color.Red); SimulationGame.PrimitiveDrawer.Rectangle(ambientHitableObject.HitBoxBounds.ToXnaRectangle(), Color.White); } else { SimulationGame.PrimitiveDrawer.Rectangle(ambientHitableObject.HitBoxBounds.ToXnaRectangle(), Color.White); } } } }
protected static void Serialize(AmbientHitableObject staticBlockingObject, ref JObject jObject) { HitableObjectSerializer.Serialize(staticBlockingObject, ref jObject); SerializationUtils.AddToObject(jObject, staticBlockingObject, type, serializeableProperties); }
protected static void Deserialize(ref JObject jObject, AmbientHitableObject ambientHitableObject) { HitableObjectSerializer.Deserialize(ref jObject, ambientHitableObject); SerializationUtils.SetFromObject(jObject, ambientHitableObject, type, serializeableProperties); }