private void UpdateSkin() { if (InitialFaction == null) { return; } //!!!!!!temp. not universal bool badFaction = InitialFaction.Name == "BadFaction"; if (Type.Name == "RTSRobot") { (AttachedObjects[0] as MapObjectAttachedMesh).MeshObject. SubObjects[0].MaterialName = badFaction ? "Robot2" : "Robot"; } else if (Type.Name == "RTSConstructor") { (AttachedObjects[0] as MapObjectAttachedMesh).MeshObject. SubObjects[0].MaterialName = badFaction ? "Red" : "Blue"; } else if (Type.Name == "RTSMine" || Type.Name == "RTSHeadquaters") { foreach (MapObjectAttachedObject attachedObject in AttachedObjects) { MapObjectAttachedMesh meshAttachedObject = attachedObject as MapObjectAttachedMesh; if (meshAttachedObject != null) { MapObjectTypeAttachedMesh typeObject = (MapObjectTypeAttachedMesh)meshAttachedObject.TypeObject; if (typeObject.ForceMaterial == "") { meshAttachedObject.MeshObject.SetMaterialNameForAllSubObjects( badFaction ? (Type.Name + "2") : Type.Name); } } } } else if (Type.Name == "RTSFactory") { foreach (MapObjectAttachedObject attachedObject in AttachedObjects) { MapObjectAttachedMesh meshAttachedObject = attachedObject as MapObjectAttachedMesh; if (meshAttachedObject != null) { MapObjectTypeAttachedMesh typeObject = (MapObjectTypeAttachedMesh)meshAttachedObject.TypeObject; if (typeObject.ForceMaterial == "") { meshAttachedObject.MeshObject.SetMaterialNameForAllSubObjects( badFaction ? (Type.Name + "2") : Type.Name); break; } } } } }
void CreateProductUnitAttachedMesh() { productUnitAttachedMesh = new MapObjectAttachedMesh(); Attach(productUnitAttachedMesh); string meshName = null; Vec3 meshOffset = Vec3.Zero; Vec3 meshScale = new Vec3(1, 1, 1); { foreach (MapObjectTypeAttachedObject typeAttachedObject in productUnitType.AttachedObjects) { MapObjectTypeAttachedMesh typeAttachedMesh = typeAttachedObject as MapObjectTypeAttachedMesh; if (typeAttachedMesh == null) { continue; } meshName = typeAttachedMesh.MeshName; meshOffset = typeAttachedMesh.Position; meshScale = typeAttachedMesh.Scale; break; } } productUnitAttachedMesh.MeshName = meshName; Vec3 pos = meshOffset; { MapObjectAttachedObject buildPointAttachedHelper = GetAttachedObjectByAlias("productUnitPoint"); if (buildPointAttachedHelper != null) { pos += buildPointAttachedHelper.PositionOffset; } } productUnitAttachedMesh.PositionOffset = pos; productUnitAttachedMesh.ScaleOffset = meshScale; if (Type.Name == "RTSHeadquaters") { foreach (MeshObject.SubObject subMesh in productUnitAttachedMesh.MeshObject.SubObjects) { subMesh.MaterialName = "RTSBuildMaterial"; } } }