override public void OnInspectorGUI() { serializedObject.Update(); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(creature_asset); EditorGUILayout.PropertyField(local_time_scale); EditorGUILayout.PropertyField(region_offsets_z); EditorGUILayout.PropertyField(counter_clockwise); bool did_change = EditorGUI.EndChangeCheck(); // new assignment if ((creature_asset.objectReferenceValue != null) && did_change) { UpdateData(); } if (creature_asset.objectReferenceValue != null) { CreatureAsset cur_asset = (CreatureAsset)creature_asset.objectReferenceValue; // asset changed if (cur_asset.GetIsDirty()) { UpdateData(); cur_asset.SetIsDirty(false); } // animations if (cur_asset.creature_manager != null) { string[] animation_names = new string[cur_asset.creature_manager.animations.Keys.Count]; int i = 0; foreach (string cur_name in cur_asset.creature_manager.animations.Keys) { animation_names[i] = cur_name; i++; } animation_choice_index.intValue = EditorGUILayout.Popup("Animation:", animation_choice_index.intValue, animation_names); should_loop.boolValue = EditorGUILayout.Toggle("Loop", should_loop.boolValue); if (!Application.isPlaying) { updateTargetAnimation(); } serializedObject.ApplyModifiedProperties(); } } }
public virtual void LateUpdate() { if (creature_manager != null) { doSwapMesh(); if (creature_asset.GetIsDirty() || vertices == null) { CreateRenderingData(); creature_asset.SetIsDirty(false); } UpdateTime(); UpdateRenderingData(); meshFilter.sharedMesh = active_mesh; } }
/* * public List<UIVertex> ConvertMesh() * { * Vector3[] vertices = active_mesh.vertices; * int[] triangles = active_mesh.triangles; * Vector3[] normals = active_mesh.normals; * Vector2[] uv = active_mesh.uv; * * List<UIVertex> vertexList = new List<UIVertex>(triangles.Length); * * UIVertex vertex; * for (int i = 0; i < triangles.Length; i++) * { * vertex = new UIVertex(); * int triangle = triangles[i]; * * vertex.position = (vertices[triangle] - active_mesh.bounds.center); * vertex.uv0 = uv[triangle]; * vertex.normal = normals[triangle]; * * vertexList.Add(vertex); * * if (i % 3 == 0) * vertexList.Add(vertex); * } * * return vertexList; * } */ // Update is called once per frame void LateUpdate() { if (creature_manager != null) { doSwapMesh(); if (creature_asset.GetIsDirty() || vertices == null) { CreateRenderingData(); creature_asset.SetIsDirty(false); } UpdateTime(); UpdateRenderingData(); } var renderer = GetComponent <CanvasRenderer>(); renderer.SetMesh(active_mesh); renderer.materialCount = 1; renderer.SetMaterial(material, 0); }
public void RunLiveSync() { CreatureAsset creature_asset = (CreatureAsset)target; if (Application.platform == RuntimePlatform.WindowsEditor) { if (!LiveSync.creatureClient_isConnected()) { var can_connect = LiveSync.creatureClient_startConnection(); if (!can_connect) { LiveSync.creatureClient_stopConnection(); } } if (LiveSync.creatureClient_isConnected()) { var sync_type = GetLiveSyncType(); if (sync_type.Length > 0) { System.IntPtr raw_ptr = LiveSync.creatureClient_retrieveRequestExportFilename(sync_type); string response_str = Marshal.PtrToStringAnsi(raw_ptr); if (response_str.Length == 0) { UnityEditor.EditorUtility.DisplayDialog("Creature Live Sync Error", "Make sure Creature Pro is running in Animate Mode to Live Sync!", "Ok"); } else { if (sync_type == "REQUEST_JSON") { string file_contents = System.IO.File.ReadAllText(response_str); TextAsset text_asset = (TextAsset)creatureJSON.objectReferenceValue; File.WriteAllText(AssetDatabase.GetAssetPath(text_asset), file_contents); EditorUtility.SetDirty(text_asset); creature_asset.creature_manager = null; UpdateData(); creature_asset.SetIsDirty(true); } else if (sync_type == "REQUEST_BYTES") { byte[] file_contents = System.IO.File.ReadAllBytes(response_str); TextAsset flat_text_asset = (TextAsset)flatCreatureData.objectReferenceValue; File.WriteAllBytes(AssetDatabase.GetAssetPath(flat_text_asset), file_contents); EditorUtility.SetDirty(flat_text_asset); creature_asset.creature_manager = null; UpdateData(); creature_asset.SetIsDirty(true); } AssetDatabase.Refresh(); } } } else { UnityEditor.EditorUtility.DisplayDialog("Creature Live Sync Error", "Make sure Creature Pro is running in Animate Mode to Live Sync!", "Ok"); } } }