First animations, prepared for addition of new animations
|
@ -22,7 +22,8 @@ namespace AnimationsFileCreator
|
||||||
{
|
{
|
||||||
|
|
||||||
DialogResult result = Dialog.FileOpen();
|
DialogResult result = Dialog.FileOpen();
|
||||||
textureName = result.Path.Split('\\').Last();
|
var temp = result.Path.Split('\\');
|
||||||
|
textureName = temp[temp.Length-2] + "/"+temp[temp.Length - 1];
|
||||||
textureName = textureName.Split('.')[0];
|
textureName = textureName.Split('.')[0];
|
||||||
}
|
}
|
||||||
Console.WriteLine("Введите количество кадров анимации: ");
|
Console.WriteLine("Введите количество кадров анимации: ");
|
||||||
|
@ -60,11 +61,11 @@ namespace AnimationsFileCreator
|
||||||
container.FrameTime = new System.Collections.Generic.List<Tuple<int, int>>();
|
container.FrameTime = new System.Collections.Generic.List<Tuple<int, int>>();
|
||||||
container.FrameTime.Add(new Tuple<int, int>(0, interval));
|
container.FrameTime.Add(new Tuple<int, int>(0, interval));
|
||||||
container.StartSpriteRectangle = rectangle;
|
container.StartSpriteRectangle = rectangle;
|
||||||
container.TextureName = textureName;
|
container.TextureName = "Textures/AnimationTextures/"+textureName;
|
||||||
container.TextureFrameInterval = 1;
|
container.TextureFrameInterval = 0;
|
||||||
container.Id = id;
|
container.Id = id;
|
||||||
string json = JsonConvert.SerializeObject(container);
|
string json = JsonConvert.SerializeObject(container);
|
||||||
StreamWriter writer = new StreamWriter("../../../../ZoFo/Content/animations/"+id);
|
StreamWriter writer = new StreamWriter("../../../../ZoFo/Content/Textures/Animations/"+id+ ".animation");
|
||||||
writer.WriteLine(json);
|
writer.WriteLine(json);
|
||||||
writer.Close();
|
writer.Close();
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,6 +91,90 @@
|
||||||
/processorParam:Quality=Best
|
/processorParam:Quality=Best
|
||||||
/build:sounds/Zombi stoit.wav
|
/build:sounds/Zombi stoit.wav
|
||||||
|
|
||||||
|
#begin Textures/AnimationTextures/Character/hr-level1_idle_gun.png
|
||||||
|
/importer:TextureImporter
|
||||||
|
/processor:TextureProcessor
|
||||||
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
/processorParam:ColorKeyEnabled=True
|
||||||
|
/processorParam:GenerateMipmaps=False
|
||||||
|
/processorParam:PremultiplyAlpha=True
|
||||||
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
|
/processorParam:MakeSquare=False
|
||||||
|
/processorParam:TextureFormat=Color
|
||||||
|
/build:Textures/AnimationTextures/Character/hr-level1_idle_gun.png
|
||||||
|
|
||||||
|
#begin Textures/AnimationTextures/Character/hr-level1_idle.png
|
||||||
|
/importer:TextureImporter
|
||||||
|
/processor:TextureProcessor
|
||||||
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
/processorParam:ColorKeyEnabled=True
|
||||||
|
/processorParam:GenerateMipmaps=False
|
||||||
|
/processorParam:PremultiplyAlpha=True
|
||||||
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
|
/processorParam:MakeSquare=False
|
||||||
|
/processorParam:TextureFormat=Color
|
||||||
|
/build:Textures/AnimationTextures/Character/hr-level1_idle.png
|
||||||
|
|
||||||
|
#begin Textures/AnimationTextures/Character/hr-level1_mining_tool-1.png
|
||||||
|
/importer:TextureImporter
|
||||||
|
/processor:TextureProcessor
|
||||||
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
/processorParam:ColorKeyEnabled=True
|
||||||
|
/processorParam:GenerateMipmaps=False
|
||||||
|
/processorParam:PremultiplyAlpha=True
|
||||||
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
|
/processorParam:MakeSquare=False
|
||||||
|
/processorParam:TextureFormat=Color
|
||||||
|
/build:Textures/AnimationTextures/Character/hr-level1_mining_tool-1.png
|
||||||
|
|
||||||
|
#begin Textures/AnimationTextures/Character/hr-level1_mining_tool-2.png
|
||||||
|
/importer:TextureImporter
|
||||||
|
/processor:TextureProcessor
|
||||||
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
/processorParam:ColorKeyEnabled=True
|
||||||
|
/processorParam:GenerateMipmaps=False
|
||||||
|
/processorParam:PremultiplyAlpha=True
|
||||||
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
|
/processorParam:MakeSquare=False
|
||||||
|
/processorParam:TextureFormat=Color
|
||||||
|
/build:Textures/AnimationTextures/Character/hr-level1_mining_tool-2.png
|
||||||
|
|
||||||
|
#begin Textures/AnimationTextures/Character/hr-level1_running_gun.png
|
||||||
|
/importer:TextureImporter
|
||||||
|
/processor:TextureProcessor
|
||||||
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
/processorParam:ColorKeyEnabled=True
|
||||||
|
/processorParam:GenerateMipmaps=False
|
||||||
|
/processorParam:PremultiplyAlpha=True
|
||||||
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
|
/processorParam:MakeSquare=False
|
||||||
|
/processorParam:TextureFormat=Color
|
||||||
|
/build:Textures/AnimationTextures/Character/hr-level1_running_gun.png
|
||||||
|
|
||||||
|
#begin Textures/AnimationTextures/Character/hr-level1_running.png
|
||||||
|
/importer:TextureImporter
|
||||||
|
/processor:TextureProcessor
|
||||||
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
/processorParam:ColorKeyEnabled=True
|
||||||
|
/processorParam:GenerateMipmaps=False
|
||||||
|
/processorParam:PremultiplyAlpha=True
|
||||||
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
|
/processorParam:MakeSquare=False
|
||||||
|
/processorParam:TextureFormat=Color
|
||||||
|
/build:Textures/AnimationTextures/Character/hr-level1_running.png
|
||||||
|
|
||||||
|
#begin Textures/AnimationTextures/unicorn.png
|
||||||
|
/importer:TextureImporter
|
||||||
|
/processor:TextureProcessor
|
||||||
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
/processorParam:ColorKeyEnabled=True
|
||||||
|
/processorParam:GenerateMipmaps=False
|
||||||
|
/processorParam:PremultiplyAlpha=True
|
||||||
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
|
/processorParam:MakeSquare=False
|
||||||
|
/processorParam:TextureFormat=Color
|
||||||
|
/build:Textures/AnimationTextures/unicorn.png
|
||||||
|
|
||||||
#begin Textures/GUI/background/base.png
|
#begin Textures/GUI/background/base.png
|
||||||
/importer:TextureImporter
|
/importer:TextureImporter
|
||||||
/processor:TextureProcessor
|
/processor:TextureProcessor
|
||||||
|
|
After Width: | Height: | Size: 1 MiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 1 MiB |
After Width: | Height: | Size: 1 MiB |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 3 MiB |
BIN
ZoFo/Content/Textures/AnimationTextures/unicorn.png
Normal file
After Width: | Height: | Size: 34 KiB |
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"id": "player_idle_top-right_noweapon",
|
||||||
|
"textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
|
||||||
|
"startSpriteRectangle": {
|
||||||
|
"X": 0,
|
||||||
|
"Y": 116,
|
||||||
|
"Width": 92,
|
||||||
|
"Height": 116
|
||||||
|
},
|
||||||
|
"frameSecond": [
|
||||||
|
{
|
||||||
|
"Item1": 0,
|
||||||
|
"Item2": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"textureFrameInterval": 0,
|
||||||
|
"framesCount": 22,
|
||||||
|
"isCycle": true,
|
||||||
|
"offset": "0, 0"
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"id": "player_idle_top_noweapon",
|
||||||
|
"textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
|
||||||
|
"startSpriteRectangle": {
|
||||||
|
"X": 0,
|
||||||
|
"Y": 0,
|
||||||
|
"Width": 92,
|
||||||
|
"Height": 116
|
||||||
|
},
|
||||||
|
"frameSecond": [
|
||||||
|
{
|
||||||
|
"Item1": 0,
|
||||||
|
"Item2": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"textureFrameInterval": 0,
|
||||||
|
"framesCount": 22,
|
||||||
|
"isCycle": true,
|
||||||
|
"offset": "0, 0"
|
||||||
|
}
|
20
ZoFo/Content/Textures/Animations/running_top.animation
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"id": "running_top",
|
||||||
|
"textureName": "unicorn",
|
||||||
|
"startSpriteRectangle": {
|
||||||
|
"X": 0,
|
||||||
|
"Y": 30,
|
||||||
|
"Width": 30,
|
||||||
|
"Height": 60
|
||||||
|
},
|
||||||
|
"frameSecond": [
|
||||||
|
{
|
||||||
|
"Item1": 0,
|
||||||
|
"Item2": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"textureFrameInterval": 1,
|
||||||
|
"framesCount": 22,
|
||||||
|
"isCycle": true,
|
||||||
|
"offset": "0, 0"
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
{"id":"testAnimationExample","textureName":"Textures/AnimationTextures/unicorn","startSpriteRectangle":{"X":0,"Y":0,"Width":400,"Height":400},"frameSecond":[{"Item1":0,"Item2":1}],"textureFrameInterval":1,"framesCount":1,"isCycle":true,"offset":"0, 0"}
|
|
@ -12,6 +12,8 @@ using ZoFo.GameCore.GameObjects.MapObjects;
|
||||||
using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
|
using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
|
||||||
using ZoFo.GameCore.GameObjects.MapObjects.Tiles;
|
using ZoFo.GameCore.GameObjects.MapObjects.Tiles;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Reflection;
|
||||||
|
using ZoFo.GameCore.GameObjects.Entities;
|
||||||
|
|
||||||
namespace ZoFo.GameCore
|
namespace ZoFo.GameCore
|
||||||
{
|
{
|
||||||
|
@ -45,12 +47,17 @@ namespace ZoFo.GameCore
|
||||||
|
|
||||||
|
|
||||||
List<MapObject> mapObjects = new List<MapObject>();
|
List<MapObject> mapObjects = new List<MapObject>();
|
||||||
|
List<GameObject> gameObjects = new List<GameObject>();
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Клиент должен обнговлять игру анимаций
|
/// Клиент должен обнговлять игру анимаций
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="gameTime"></param>
|
/// <param name="gameTime"></param>
|
||||||
internal void Update(GameTime gameTime)
|
internal void Update(GameTime gameTime)
|
||||||
{
|
{
|
||||||
|
for (int i = 0; i < gameObjects.Count; i++)
|
||||||
|
{
|
||||||
|
gameObjects[i].UpdateAnimations();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
internal void Draw(SpriteBatch spriteBatch)
|
internal void Draw(SpriteBatch spriteBatch)
|
||||||
{
|
{
|
||||||
|
@ -58,6 +65,10 @@ namespace ZoFo.GameCore
|
||||||
{
|
{
|
||||||
mapObjects[i].Draw(spriteBatch);
|
mapObjects[i].Draw(spriteBatch);
|
||||||
}
|
}
|
||||||
|
for (int i = 0; i < gameObjects.Count; i++)
|
||||||
|
{
|
||||||
|
gameObjects[i].Draw(spriteBatch);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void GotData(UpdateData update)
|
internal void GotData(UpdateData update)
|
||||||
|
@ -72,6 +83,22 @@ namespace ZoFo.GameCore
|
||||||
(update as UpdateTileCreated).tileSetName
|
(update as UpdateTileCreated).tileSetName
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
else if (update is UpdateGameObjectCreated)
|
||||||
|
{
|
||||||
|
var a = Assembly.GetAssembly(typeof(GameObject));
|
||||||
|
if ((update as UpdateGameObjectCreated).GameObjectType == "EntittyForAnimationTests")
|
||||||
|
{
|
||||||
|
|
||||||
|
gameObjects.Add(
|
||||||
|
new EntittyForAnimationTests(new Vector2(100,100))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
//gameObjects.Add( TODO reflection
|
||||||
|
//Activator.CreateInstance(Type.GetType("ZoFo.GameCore.GameObjects.Entities.EntittyForAnimationTests")
|
||||||
|
///*(update as UpdateGameObjectCreated).GameObjectType*/, new []{ new Vector2(100, 100) })
|
||||||
|
//as GameObject
|
||||||
|
//);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -81,7 +81,8 @@ namespace ZoFo.GameCore.GameManagers
|
||||||
_spriteBatch = new SpriteBatch(GraphicsDevice);
|
_spriteBatch = new SpriteBatch(GraphicsDevice);
|
||||||
debugHud.LoadContent();
|
debugHud.LoadContent();
|
||||||
currentGUI.LoadContent();
|
currentGUI.LoadContent();
|
||||||
|
animationBuilder = new AnimationBuilder();
|
||||||
|
animationBuilder.LoadAnimations();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,5 +12,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient
|
||||||
public class UpdateGameObjectCreated : UpdateData
|
public class UpdateGameObjectCreated : UpdateData
|
||||||
{
|
{
|
||||||
public UpdateGameObjectCreated() { UpdateType = "UpdateGameObjectCreated"; }
|
public UpdateGameObjectCreated() { UpdateType = "UpdateGameObjectCreated"; }
|
||||||
|
public string GameObjectType;
|
||||||
|
public string GameObjectId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using ZoFo.GameCore.ZoFo_graphics;
|
||||||
|
|
||||||
|
namespace ZoFo.GameCore.GameObjects.Entities
|
||||||
|
{
|
||||||
|
internal class EntittyForAnimationTests : Entity
|
||||||
|
{
|
||||||
|
|
||||||
|
//public override GraphicsComponent graphicsComponent { get; } = new GraphicsComponent(new List<string> { "тут пишите название анимации" }, "сдублируйте " +
|
||||||
|
public override GraphicsComponent graphicsComponent { get; } = new GraphicsComponent(new List<string> { "player_idle_top-right_noweapon" }, "player_idle_top-right_noweapon");
|
||||||
|
public EntittyForAnimationTests(Vector2 position) : base(position)
|
||||||
|
{
|
||||||
|
graphicsComponent.ObjectDrawRectangle = new Rectangle(0,0,50,50);
|
||||||
|
position = new Vector2(10, 10);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,7 +10,7 @@ namespace ZoFo.GameCore.GameObjects.Entities
|
||||||
{
|
{
|
||||||
public abstract class Entity : GameObject
|
public abstract class Entity : GameObject
|
||||||
{
|
{
|
||||||
public override GraphicsComponent graphicsComponent => null;
|
//public override GraphicsComponent graphicsComponent => null;
|
||||||
public CollisionComponent collisionComponent { get; protected set; }
|
public CollisionComponent collisionComponent { get; protected set; }
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
protected Entity(Vector2 position) : base(position)
|
protected Entity(Vector2 position) : base(position)
|
||||||
|
|
|
@ -3,11 +3,14 @@ using ZoFo.GameCore.GameManagers;
|
||||||
using ZoFo.GameCore.GameManagers.CollisionManager;
|
using ZoFo.GameCore.GameManagers.CollisionManager;
|
||||||
using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
|
using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
|
||||||
using ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player;
|
using ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player;
|
||||||
|
using ZoFo.GameCore.ZoFo_graphics;
|
||||||
|
|
||||||
namespace ZoFo.GameCore.GameObjects.Entities.Interactables;
|
namespace ZoFo.GameCore.GameObjects.Entities.Interactables;
|
||||||
|
|
||||||
public class Interactable : Entity
|
public class Interactable : Entity
|
||||||
{
|
{
|
||||||
|
public override GraphicsComponent graphicsComponent => throw new System.NotImplementedException();
|
||||||
|
|
||||||
public Interactable(Vector2 position) : base(position)
|
public Interactable(Vector2 position) : base(position)
|
||||||
{
|
{
|
||||||
collisionComponent.OnTriggerEnter += (sender, e) => ChangeInteraction(sender, e, true);
|
collisionComponent.OnTriggerEnter += (sender, e) => ChangeInteraction(sender, e, true);
|
||||||
|
|
|
@ -17,6 +17,8 @@ public class LivingEntity : Entity
|
||||||
inputManager = new InputManager();
|
inputManager = new InputManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override GraphicsComponent graphicsComponent { get; } = null;
|
||||||
|
|
||||||
#region Server side
|
#region Server side
|
||||||
/*public override void Update()
|
/*public override void Update()
|
||||||
{
|
{
|
||||||
|
|
|
@ -63,8 +63,10 @@ public abstract class GameObject
|
||||||
/// Для клиента
|
/// Для клиента
|
||||||
/// Обновление, которое вызывается у клиента, для просмотра анимаций
|
/// Обновление, которое вызывается у клиента, для просмотра анимаций
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual void UpdateAnimations(GameTime gameTime)
|
public virtual void UpdateAnimations()
|
||||||
{
|
{
|
||||||
|
graphicsComponent.ObjectDrawRectangle.X = (int)position.X; //Move To place where Updates Sets your position
|
||||||
|
graphicsComponent.ObjectDrawRectangle.Y = (int)position.Y;
|
||||||
PlayAnimation_OnClient();
|
PlayAnimation_OnClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using ZoFo.GameCore.GameManagers;
|
||||||
using ZoFo.GameCore.GameManagers.MapManager;
|
using ZoFo.GameCore.GameManagers.MapManager;
|
||||||
using ZoFo.GameCore.GameManagers.NetworkManager;
|
using ZoFo.GameCore.GameManagers.NetworkManager;
|
||||||
using ZoFo.GameCore.GameManagers.NetworkManager.Updates;
|
using ZoFo.GameCore.GameManagers.NetworkManager.Updates;
|
||||||
|
@ -76,6 +77,8 @@ namespace ZoFo.GameCore
|
||||||
gameObjects = new List<GameObject>();
|
gameObjects = new List<GameObject>();
|
||||||
entities = new List<Entity>();
|
entities = new List<Entity>();
|
||||||
new MapManager().LoadMap();
|
new MapManager().LoadMap();
|
||||||
|
|
||||||
|
AppManager.Instance.server.RegisterGameObject(new EntittyForAnimationTests(new Vector2(40, 40)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -121,7 +124,13 @@ namespace ZoFo.GameCore
|
||||||
Size = (gameObject as MapObject).graphicsComponent.ObjectDrawRectangle.Size,
|
Size = (gameObject as MapObject).graphicsComponent.ObjectDrawRectangle.Size,
|
||||||
tileSetName = (gameObject as MapObject).graphicsComponent.mainTextureName
|
tileSetName = (gameObject as MapObject).graphicsComponent.mainTextureName
|
||||||
});//TODO
|
});//TODO
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AddData(new UpdateGameObjectCreated()
|
||||||
|
{ GameObjectType = gameObject.GetType().Name }
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -13,11 +13,12 @@ namespace DangerousD.GameCore.Graphics
|
||||||
public void LoadAnimations()
|
public void LoadAnimations()
|
||||||
{
|
{
|
||||||
Animations = new List<AnimationContainer>();
|
Animations = new List<AnimationContainer>();
|
||||||
string[] animationFilesNames = Directory.GetFiles("../../../Content/animations");
|
string[] animationFilesNames = Directory.GetFiles("../../../Content/Textures/Animations");
|
||||||
|
|
||||||
StreamReader reader;
|
StreamReader reader;
|
||||||
foreach (var fileName in animationFilesNames)
|
foreach (var fileName in animationFilesNames)
|
||||||
{
|
{
|
||||||
|
if (!fileName.EndsWith(".animation")) continue;
|
||||||
reader = new StreamReader(fileName);
|
reader = new StreamReader(fileName);
|
||||||
string json = reader.ReadToEnd();
|
string json = reader.ReadToEnd();
|
||||||
AnimationContainer animation = JsonConvert.DeserializeObject<AnimationContainer>(json);
|
AnimationContainer animation = JsonConvert.DeserializeObject<AnimationContainer>(json);
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace ZoFo.GameCore.ZoFo_graphics
|
||||||
|
|
||||||
public class GraphicsComponent
|
public class GraphicsComponent
|
||||||
{
|
{
|
||||||
public Rectangle ObjectDrawRectangle { get; set; }
|
public Rectangle ObjectDrawRectangle;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|