Beispiel #1
0
        public GVAppearanceType(FITFile spriteFile) : base(spriteFile)
        {
            if (!spriteFile.SeekSection("States"))
            {
                return;
            }
            if (!spriteFile.GetInt("NumStates", out numStates))
            {
                return;
            }

            for (int i = 0; i < numStates; i++)
            {
                if (spriteFile.SeekSection("State" + i))
                {
                    var state = new GVActorData();

                    int stat;
                    if (!spriteFile.GetInt("State", out stat))
                    {
                        return;
                    }

                    state.state = (GVActorStates)stat;

                    if (!spriteFile.GetInt("NumFrames", out state.numFrames))
                    {
                        return;
                    }
                    if (!spriteFile.GetFloat("FrameRate", out state.frameRate))
                    {
                        return;
                    }
                    if (!spriteFile.GetInt("BasePacketNumber", out state.basePacketNumber))
                    {
                        return;
                    }
                    if (!spriteFile.GetInt("NumRotations", out state.numRotations))
                    {
                        return;
                    }


                    state.shapeId = state.basePacketNumber;

                    AppearStates.Add(state);
                }
            }
        }
        protected void UpdateObject()
        {
            Data = baseObject.Appearance;

            if (Data != null && meshFilter.sharedMesh != null && Data.vertices != null)
            {
                ActualGVState = ((GVAppearance)baseObject.appearance).ActualState;
                fps           = ActualStateFramerate;

                var mesh = meshFilter.sharedMesh;
                mesh.uv = Data.uvs.Take(4).ToArray();
                // Assign mesh
                meshFilter.sharedMesh = mesh;

                isPlaying    = Data.isAnim && Data.numFrames > 1;
                restartAnims = (Data.isAnim && Data.numFrames > 1);
            }
        }
        protected override void Update()
        {
            base.Update();

            if (!isSetup && baseObject != null)
            {
                this.InitObject();

                if (isSetup)
                {
                    ActualGVState = ((GVAppearance)baseObject.appearance).ActualState;

                    if (ActualGVState.numRotations > 1)
                    {
                        StartCoroutine(TurretRotateRandom(ActualGVState.numRotations - 1));
                    }
                }
            }
        }
Beispiel #4
0
        protected new void InitObject()
        {
            base.InitObject();

            Data = baseObject.Appearance;

            if (Data != null && Data.vertices != null)
            {
                ActualGVState = ((GVAppearance)baseObject.appearance).ActualState;

                this.floorGo.SetActive((ActualState.delta == 1));

                isSetup = true;

                fps = ActualStateFramerate;


                Shader   shader   = Shader.Find("MechCommanderUnity/PaletteSwapLookup");
                Material material = new Material(shader);
                material.mainTexture = Data.currentTexture;
                material.SetTexture("_PaletteTex", PalTexture);

                meshRenderer.sortingLayerName = "Objs";
                meshRenderer.sortingOrder     = baseSortingIndex + 1;
                meshRenderer.sharedMaterial   = material;

                floorMeshRenderer.sortingLayerName = "Objs";
                floorMeshRenderer.sortingOrder     = baseSortingIndex;
                floorMeshRenderer.sharedMaterial   = material;

                // Create mesh
                Mesh mesh = new Mesh();
                mesh.name = string.Format("sprite");

                // Indices
                int[] triangles = new int[6]
                {
                    0, 1, 2,
                    3, 2, 1,
                };

                // Normals
                Vector3   normal  = Vector3.Normalize(Vector3.up + Vector3.forward);
                Vector3[] normals = new Vector3[4];
                normals[0] = normal;
                normals[1] = normal;
                normals[2] = normal;
                normals[3] = normal;

                mesh.vertices  = Data.vertices.Take(4).ToArray();
                mesh.triangles = triangles;
                mesh.normals   = normals;
                mesh.uv        = Data.uvs.Take(4).ToArray();
                // Assign mesh
                meshFilter.sharedMesh = mesh;

                isPlaying    = Data.isAnim && Data.numFrames > 1;
                restartAnims = (Data.isAnim && Data.numFrames > 1);

                if (ActualState.delta == 1 && Data.uvsFloor != null && Data.uvsFloor.Length > 3)
                {
                    Debug.Log("Delta in GATE", this);
                    // Create mesh
                    Mesh floorMesh = new Mesh();
                    floorMesh.name = "spriteFloor";

                    floorMesh.vertices  = Data.vertices.Take(4).ToArray();
                    floorMesh.triangles = triangles;
                    floorMesh.normals   = normals;

                    floorMesh.uv = Data.uvsFloor.Take(4).ToArray();
                    // Assign mesh
                    floorMeshFilter.sharedMesh = floorMesh;
                }
            }
        }