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);
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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);
        }