public override void OnInspectorGUI()
        {
            if (!Application.isPlaying)
            {
                base.OnInspectorGUI();

                GravitationalBodyManager manager =
                    target as GravitationalBodyManager;

                EditorGUILayout.Space();
                bool guiEnabled = GUI.enabled;
                GUI.enabled = false;
                EditorGUILayout.IntField("Count", manager.Count);
                GUI.enabled = guiEnabled;
                EditorGUILayout.Space();

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.Space();
                if (GUILayout.Button("Add Body"))
                {
                    manager.AddBody();
                }
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.Space();
            }
        }
예제 #2
0
        private void OnEnable()
        {
            if (bodies == null)
            {
                bodies =
                    new GameObject().AddComponent <GravitationalBodyManager>();
                bodies.transform.parent = transform;
            }

            LoadResource("GravitationalField", ref gravitationalField);
            LoadResource("GravitationalFieldVelocity", ref gravitationalFieldVelocity);
            LoadResource("GravitationalFieldPoints", ref pointsMaterial);
            LoadResource("GravitationalFieldGrid", ref gridMaterial);

            computePointPositionsKernel = gravitationalField.FindKernel("ComputePointPositions");
            computeDisplacementKernel   = gravitationalField.FindKernel("ComputeDisplacement");
            computeGridKernel           = gravitationalField.FindKernel("ComputeGrid");

            computeVelocityKernel = gravitationalFieldVelocity.FindKernel("ComputeVelocity");
        }