/// <summary> /// Construye un circulo según las opciones dadas /// </summary> /// <param name="id">Id del body</param> /// <param name="owner">Owner del body</param> /// <param name="isSolid">Si el body es sólido</param> /// <param name="relativeToFacing">Determina si se debe tomar en cuenta la dirección /// a la que está mirando la entidad para posicionar el body /// relativo a esa dirección</param> /// <param name="radius">Radio del circulo</param> /// <returns>Circulo generado</returns> public static Sphere CreateCircle(string id, IEntity owner, bool isSolid, bool relativeToFacing, float radius) { Sphere sphere = new Sphere(id, Vector2.Zero, radius, owner, isSolid); if (relativeToFacing) { bool facingRight = owner.getState(EntityState.FacingRight); if (facingRight != true) { sphere.MirrorHorizontal(owner.getVectorProperty(EntityProperty.Position)); } } return sphere; }
/// <summary> /// Construye un circulo según las opciones dadas /// </summary> /// <param name="id">Id del body</param> /// <param name="owner">Owner del body</param> /// <param name="isSolid">Si el body es sólido</param> /// <param name="relativeToFacing">Determina si se debe tomar en cuenta la dirección /// a la que está mirando la entidad para posicionar el body /// relativo a esa dirección</param> /// <param name="radius">Radio del circulo</param> /// <param name="startPosition">Coordenadas de inicio del body</param> /// <param name="startCenter">Determina si las coordenadas de inicio se refieren /// al punto de inicio desde donde se crea el body o al centro del mismo</param> /// <param name="layer">Capa de colisión donde se encontrará el body</param> /// <returns>Circulo generado</returns> public static Sphere CreateCircle(string id, IEntity owner, bool isSolid, bool relativeToFacing, float radius, Vector2 startPosition, bool startCenter, float layer) { if (startCenter) { startPosition.X -= radius; startPosition.Y -= radius; } Sphere sphere = new Sphere(id, startPosition, radius, owner, isSolid); sphere.Layer = layer; if (relativeToFacing) { bool facingRight = owner.getState(EntityState.FacingRight); if (facingRight != true) { sphere.MirrorHorizontal(owner.getVectorProperty(EntityProperty.Position)); } } return sphere; }
/// <summary> /// Construye un rectangulo según las opciones dadas /// </summary> /// <param name="id">Id del body</param> /// <param name="owner">Owner del body</param> /// <param name="isSolid">Si el body es sólido</param> /// <param name="relativeToFacing">Determina si se debe tomar en cuenta la dirección /// a la que está mirando la entidad para posicionar el body /// relativo a esa dirección</param> /// <param name="width">Ancho del rectangulo</param> /// <param name="height">Alto del rectangulo</param> /// <param name="startPosition">Coordenadas de inicio del body</param> /// <param name="startCenter">Determina si las coordenadas de inicio se refieren /// al primer punto del body o al centro de este</param> /// <param name="layer">Capa de colisión donde se encontrará el body</param> /// <param name="colorTag">Tag de color especifico para responses que solo se activen ante dicho Tag</param> /// <returns>Rectangulo generado</returns> public static Box CreateRectangle(string id, IEntity owner, bool isSolid, bool relativeToFacing, float width, float height, Vector2 startPosition, bool startCenter, float layer, Color colorTag) { if (startCenter) { startPosition.X -= width / 2; startPosition.Y -= height / 2; } Box box = new Box(id, startPosition.X, startPosition.Y, width, height, owner, isSolid); box.Layer = layer; box.ColorTag = colorTag; if (relativeToFacing) { bool facingRight = owner.getState(EntityState.FacingRight); if (facingRight != true) { box.MirrorHorizontal(owner.getVectorProperty(EntityProperty.Position)); } } return box; }
/// <summary> /// Construye un rectangulo según las opciones dadas /// </summary> /// <param name="id">Id del body</param> /// <param name="owner">Owner del body</param> /// <param name="isSolid">Si el body es sólido</param> /// <param name="relativeToFacing">Determina si se debe tomar en cuenta la dirección /// a la que está mirando la entidad para posicionar el body /// relativo a esa dirección</param> /// <param name="width">Ancho del rectangulo</param> /// <param name="height">Alto del rectangulo</param> /// <returns>Rectangulo generado</returns> public static Box CreateRectangle(string id, IEntity owner, bool isSolid, bool relativeToFacing, float width, float height) { Box box = new Box(id, 0, 0, width, height, owner, isSolid); if (relativeToFacing) { bool facingRight = owner.getState(EntityState.FacingRight); if (facingRight != true) { box.MirrorHorizontal(owner.getVectorProperty(EntityProperty.Position)); } } return box; }
/// <summary> /// Construye un poligono según las opciones dadas /// </summary> /// <param name="id">Id del body</param> /// <param name="owner">Owner del body</param> /// <param name="isSolid">Si el body es sólido</param> /// <param name="relativeToFacing">Determina si se debe tomar en cuenta la dirección /// a la que está mirando la entidad para posicionar el body /// relativo a esa dirección</param> /// <param name="polygonPoints">Coordenadas de cada punto del poligono</param> /// <param name="startPosition">Coordenadas de inicio del body</param> /// <param name="startCenter">Determina si las coordenadas de inicio se refieren /// al punto de inicio desde donde se crea el body o al centro del mismo</param> /// <returns>Poligono generado</returns> /// <param name="layer">Capa de colisión donde se encontrará el body</param> /// <param name="colorTag">Tag de color especifico para responses que solo se activen ante dicho Tag</param> /// <returns>Poligono generado</returns> public static Polygon CreatePolygon(string id, IEntity owner, bool isSolid, bool relativeToFacing, List<Vector2> polygonPoints, Vector2 startPosition, bool startCenter, float layer, Color colorTag) { Polygon polygon = new Polygon(id, polygonPoints, owner, isSolid, startPosition); polygon.Layer = layer; polygon.ColorTag = colorTag; if (startCenter) { polygon.Offset(startPosition.X - polygon.Center.X, startPosition.Y - polygon.Center.Y); } if (relativeToFacing) { bool facingRight = owner.getState(EntityState.FacingRight); if (facingRight != true) { polygon.MirrorHorizontal(owner.getVectorProperty(EntityProperty.Position)); } } return polygon; }
/// <summary> /// Construye un poligono según las opciones dadas /// </summary> /// <param name="id">Id del body</param> /// <param name="owner">Owner del body</param> /// <param name="isSolid">Si el body es sólido</param> /// <param name="relativeToFacing">Determina si se debe tomar en cuenta la dirección /// a la que está mirando la entidad para posicionar el body /// relativo a esa dirección</param> /// <param name="polygonPoints">Coordenadas de cada punto del poligono</param> /// <returns>Poligono generado</returns> public static Polygon CreatePolygon(string id, IEntity owner, bool isSolid, bool relativeToFacing, List<Vector2> polygonPoints) { Polygon polygon = new Polygon(id, polygonPoints, owner, isSolid); if (relativeToFacing) { bool facingRight = owner.getState(EntityState.FacingRight); if (facingRight != true) { polygon.MirrorHorizontal(owner.getVectorProperty(EntityProperty.Position)); } } return polygon; }