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)); } } } }
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; } } }