Beispiel #1
0
        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;
                        }
                    }
                }
            }
        }
Beispiel #2
0
        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";
                }
            }
        }