public static bool DrawEquipmentAimingModded(Thing eq, Vector3 drawLoc, float aimAngle) { Pawn pawn; float num = aimAngle - 90f; Mesh mesh; if (aimAngle > 20f && aimAngle < 160f) { mesh = MeshPool.plane10; num += eq.def.equippedAngleOffset; } else if (aimAngle > 200f && aimAngle < 340f) { mesh = MeshPool.plane10Flip; num -= 180f; num -= eq.def.equippedAngleOffset; } else { mesh = MeshPool.plane10; num += eq.def.equippedAngleOffset; } num %= 360f; Graphic_StackCount graphic_StackCount = eq.Graphic as Graphic_StackCount; Material matSingle; if (graphic_StackCount != null) { matSingle = graphic_StackCount.SubGraphicForStackCount(1, eq.def).MatSingle; } else { matSingle = eq.Graphic.MatSingle; } if (eq.GetType() == typeof(FactionItem)) { FactionItemDef facdef = eq.def as FactionItemDef; float scalePawn = 1f; Vector3 scale = facdef.ItemMeshSize * scalePawn; Material Mat = eq.Graphic.MatAt(eq.Rotation); Matrix4x4 matrix = default(Matrix4x4); matrix.SetTRS(drawLoc, Quaternion.AngleAxis(num, Vector3.up), scale * 1.2f); Graphics.DrawMesh(mesh, matrix, matSingle, 0); // Matrix4x4 matrix = default(Matrix4x4); // matrix.SetTRS(drawLoc, Quaternion.AngleAxis(num, Vector3.up), facdef.ItemMeshSize); // Graphics.DrawMesh(mesh, matrix, matSingle, 0); // Graphics.DrawMesh() } else { Graphics.DrawMesh(mesh, drawLoc, Quaternion.AngleAxis(num, Vector3.up), matSingle, 0); } return(false); }
public override void SpawnSetup() { base.SpawnSetup(); FactionItemDef newDef = this.def as FactionItemDef; meshSize = newDef.ItemMeshSize; drawPos = this.DrawPos; drawMesh = this.Graphic.MeshAt(this.Rotation); Mat = this.Graphic.MatSingle; }
public static bool DrawEquipmentAimingModded(Thing eq, Vector3 drawLoc, float aimAngle) { Pawn pawn; ThingDef_AlienRace alienRaceDef = HarmonyPatches.AlienDefFor(eq, out pawn); if (alienRaceDef != null) { switch (pawn.Rotation.AsInt) { case 1: { drawLoc.x += (alienRaceDef.alienRace.generalSettings.alienPartGenerator.CustomDrawSize.x - 1); break; } case 2: { drawLoc.z -= (alienRaceDef.alienRace.generalSettings.alienPartGenerator.CustomDrawSize.x - 1); break; } case 3: { drawLoc.x -= (alienRaceDef.alienRace.generalSettings.alienPartGenerator.CustomDrawSize.x - 1); break; } } } float num = aimAngle - 90f; Mesh mesh; if (aimAngle > 20f && aimAngle < 160f) { mesh = MeshPool.plane10; num += eq.def.equippedAngleOffset; } else if (aimAngle > 200f && aimAngle < 340f) { mesh = MeshPool.plane10Flip; num -= 180f; num -= eq.def.equippedAngleOffset; } else { mesh = MeshPool.plane10; num += eq.def.equippedAngleOffset; } num %= 360f; Graphic_StackCount graphic_StackCount = eq.Graphic as Graphic_StackCount; Material matSingle; if (graphic_StackCount != null) { matSingle = graphic_StackCount.SubGraphicForStackCount(1, eq.def).MatSingle; } else { matSingle = eq.Graphic.MatSingle; } if (eq.GetType() == typeof(FactionItem)) { FactionItemDef facdef = eq.def as FactionItemDef; float scalePawn = alienRaceDef != null ? alienRaceDef.alienRace.generalSettings.alienPartGenerator.CustomDrawSize.x : 1f; Vector3 scale = facdef.ItemMeshSize * scalePawn; Material Mat = eq.Graphic.MatAt(eq.Rotation); Matrix4x4 matrix = default(Matrix4x4); matrix.SetTRS(drawLoc, Quaternion.AngleAxis(num, Vector3.up), scale * 1.2f); Graphics.DrawMesh(mesh, matrix, matSingle, 0); // Matrix4x4 matrix = default(Matrix4x4); // matrix.SetTRS(drawLoc, Quaternion.AngleAxis(num, Vector3.up), facdef.ItemMeshSize); // Graphics.DrawMesh(mesh, matrix, matSingle, 0); // Graphics.DrawMesh() } else { Graphics.DrawMesh(mesh, drawLoc, Quaternion.AngleAxis(num, Vector3.up), matSingle, 0); } return(false); }