public Vector3 GetScreenPosition(PositionSpace positionSpace) { switch (positionSpace) { case PositionSpace.BotMid: return(posiScreen.botMid); case PositionSpace.BotLeft: return(posiScreen.botLeft); case PositionSpace.BotRight: return(posiScreen.botRight); case PositionSpace.MidLeft: return(posiScreen.botLeft); case PositionSpace.MidRight: return(posiScreen.midRight); case PositionSpace.MidMid: return(posiScreen.midMid); case PositionSpace.TopLeft: return(posiScreen.topLeft); case PositionSpace.TopMid: return(posiScreen.topMid); case PositionSpace.TopRight: return(posiScreen.topRight); default: return(Vector3.zero); } }
internal static Vector3 GetRandomPosition(this BoxCollider2D self, PositionSpace space = PositionSpace.World) { Vector3 pos = (space == PositionSpace.Local) ? self.transform.localPosition : self.transform.position; pos += (Vector3)self.offset + new Vector3(RandomFloat.Range(-self.size.x, self.size.x) / 2, RandomFloat.Range(-self.size.y, self.size.y) / 2, 0); return(pos); }
internal static Vector3 GetRandomPosition(this CircleCollider2D self, PositionSpace space = PositionSpace.World) { Vector3 pos = (space == PositionSpace.Local) ? self.transform.localPosition : self.transform.position; Vector3 point = new Vector3(RandomFloat.Range(-self.radius, self.radius), 0, 0); point = point.RotateZ(RandomFloat.Range(0, 360)); pos += (Vector3)self.offset + point; return(pos); }
public static Vector2 V3ToV2(Vector3 v3, PositionSpace positionSpace) { switch (positionSpace) { case PositionSpace.xy: return(new Vector2(v3.x, v3.y)); case PositionSpace.xz: return(new Vector2(v3.x, v3.z)); case PositionSpace.yz: return(new Vector2(v3.y, v3.z)); } return(Vector2.zero); }
public Grid2D(int width, int height, float gridSize, Vector3 originPos, PositionSpace positionSpace, Transform parent) : base(width, height, gridSize, originPos, positionSpace) { grid = new TGridObject[Width, Height]; gridText = new TextMeshPro[Width, Height]; for (int horizontal = 0; horizontal < Width; ++horizontal) { for (int vertical = 0; vertical < Height; ++vertical) { grid[horizontal, vertical] = default; gridText[horizontal, vertical] = UtilityClass.CreateWorldText(grid[horizontal, vertical].ToString(), Color.white, parent, GridToWorldPos(horizontal, vertical) + this.gridSize * .5f, 10, TextAlignmentOptions.Center, 0); Debug.DrawLine(GridToWorldPos(horizontal, vertical), GridToWorldPos(horizontal + 1, vertical), Color.white, 100f); Debug.DrawLine(GridToWorldPos(horizontal, vertical), GridToWorldPos(horizontal, vertical + 1), Color.white, 100f); } } Debug.DrawLine(GridToWorldPos(0, Height), GridToWorldPos(Width, Height), Color.white, 100f); Debug.DrawLine(GridToWorldPos(Width, 0), GridToWorldPos(Width, Height), Color.white, 100f); }
//Width = radius //Height = angleSecPerRadiusSec //gridSize = radiusSize public RadialGrid2D(int radiusSec, int angleSecPerRadiusSec, float radiusSize, Vector3 originPos, PositionSpace positionSpace, Transform parent) : base(radiusSec, angleSecPerRadiusSec, radiusSize, originPos, positionSpace) { int total = 1; for (int i = 1; i < Width; i++) { total += i * Height; } grid = new TGridObject[total]; gridText = new TextMeshPro[total]; for (int currRadiusSec = 0; currRadiusSec < Width; ++currRadiusSec) { int numOfSec = currRadiusSec == 0 ? 1 : currRadiusSec * Height; int startOfSec = SectionToIndex(currRadiusSec, 1); for (int currAngleSec = 0; currAngleSec < numOfSec; ++currAngleSec) { int index = startOfSec + currAngleSec; grid[index] = default; Vector3 gridPos = currRadiusSec == 0 ? gridPos = Vector3.zero + originPos : GridToWorldPos(currRadiusSec, currAngleSec); gridText[index] = UtilityClass.CreateWorldText(grid[index].ToString(), Color.white, parent, gridPos + CenterOffset(currRadiusSec, currAngleSec, gridPos), (int)gridSize.x * 10, TextAlignmentOptions.Center, 0); } } }
public static GameObject InstantiateSibling(this GameObject self, GameObject prefab, Vector3 position, PositionSpace positionSpace = PositionSpace.Local, string name = null) { if (positionSpace == PositionSpace.Local) { position += self.transform.position; } Transform parent = self.transform.parent; if (parent != null) { return(parent.gameObject.InstantiateChild(prefab, position, PositionSpace.World, name)); } else { return(Instantiate(prefab, position, name)); } }
public static SpriteRenderer InstantiateSprite(this GameObject self, Sprite sprite, Vector3 position, PositionSpace positionSpace = PositionSpace.Local, string name = null) { return(InstantiateSprite(sprite, position, self, positionSpace, name)); }
public static SpriteRenderer InstantiateSprite(Sprite sprite, Vector3 position, GameObject parent = null, PositionSpace positionSpace = PositionSpace.Local, string name = null) { GameObject spriteGO = new GameObject(); if (parent != null) { spriteGO.transform.parent = parent.transform; if (positionSpace == PositionSpace.Local) { spriteGO.transform.localPosition = position; } else { spriteGO.transform.position = position; } } else { spriteGO.transform.position = position; } if (name != null) { spriteGO.name = name; } SpriteRenderer sr = spriteGO.GetOrCreateComponent <SpriteRenderer> (); if (sprite == null) { Debug.LogWarning("InstantiateSprite : Sprite parameter is null"); } sr.sprite = sprite; return(sr); }
public static GameObject InstantiateChild(this GameObject self, GameObject prefab, Vector3 position, PositionSpace positionSpace = PositionSpace.Local, string name = null) { GameObject child = GameObject.Instantiate(prefab) as GameObject; child.transform.parent = self.transform; if (positionSpace == PositionSpace.Local) { child.transform.localPosition = position; } else { child.transform.position = position; } if (name != null) { child.name = name; } return(child); }