コード例 #1
0
ファイル: IvyCaster.cs プロジェクト: AndreasGoettig/cmn6302
        private IvyController GetFreeIvy()
        {
            IvyController res = null;

            for (int i = 0; i < ivys.Count; i++)
            {
                if (!ivys[i].gameObject.activeSelf)
                {
                    res = ivys[i];
                    break;
                }
            }

            return(res);
        }
コード例 #2
0
        public void PrepareRuntimeBaked()
        {
            RTIvy                   rtIvy      = ivyGO.GetComponent <RTIvy>();
            RuntimeBakedIvy         rtBakedIvy = (RuntimeBakedIvy)rtIvy;
            RuntimeGrowthParameters defaultGrowthParameters = new RuntimeGrowthParameters();
            IvyController           ivyController           = ivyGO.GetComponent <IvyController>();

            if (rtIvy == null)
            {
                rtBakedIvy = ivyGO.GetComponent <RuntimeBakedIvy>();
                if (rtBakedIvy == null)
                {
                    rtBakedIvy = ivyGO.AddComponent <RuntimeBakedIvy>();
                }

                if (ivyController == null)
                {
                    ivyController = ivyGO.AddComponent <IvyController>();
                }

                ivyController.rtIvy            = rtBakedIvy;
                ivyController.ivyContainer     = currentIvyInfo.infoPool.ivyContainer;
                ivyController.ivyParameters    = currentIvyInfo.infoPool.ivyParameters;
                ivyController.growthParameters = defaultGrowthParameters;


                rtBakedIvy.meshFilter   = rtBakedIvy.GetComponent <MeshFilter>();
                rtBakedIvy.meshRenderer = rtBakedIvy.GetComponent <MeshRenderer>();


                if (rtBakedIvy.mrProcessedMesh == null)
                {
                    GameObject processedMesh = new GameObject();
                    processedMesh.name                    = "processedMesh";
                    processedMesh.transform.parent        = rtBakedIvy.transform;
                    processedMesh.transform.localPosition = Vector3.zero;
                    processedMesh.transform.localRotation = Quaternion.identity;
                    MeshRenderer mrProcessedMesh = processedMesh.AddComponent <MeshRenderer>();
                    MeshFilter   mfProcessedMesh = processedMesh.AddComponent <MeshFilter>();

                    rtBakedIvy.mrProcessedMesh = mrProcessedMesh;
                    rtBakedIvy.mfProcessedMesh = mfProcessedMesh;
                }
            }

            ivyController.ivyParameters = currentIvyInfo.infoPool.ivyParameters;
        }
コード例 #3
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            IvyController           ivyController    = (IvyController)target;
            RuntimeGrowthParameters growthParameters = ivyController.growthParameters;

            GUILayout.Space(10f);

            if (ivyController.rtIvy is RuntimeProceduralIvy)
            {
                EditorGUILayout.LabelField(STR_PROCEDURAL_IVY);
            }
            else if (ivyController.rtIvy is RuntimeBakedIvy)
            {
                EditorGUILayout.LabelField(STR_BAKED_IVY);
            }

            GUILayout.Space(10f);

            EditorGUILayout.PropertyField(spGrowthSpeed);

            if (ivyController.rtIvy is RuntimeProceduralIvy)
            {
                EditorGUILayout.PropertyField(spLifetime);
            }

            EditorGUILayout.PropertyField(spDelay);

            GUILayout.BeginHorizontal();

            EditorGUILayout.PropertyField(spSpeedOverLifetimeEnabled);
            if (spSpeedOverLifetimeEnabled.boolValue)
            {
                EditorGUILayout.PropertyField(spSpeedOverLifetimeCurve, GUIContent.none);
            }
            GUILayout.EndHorizontal();

            EditorGUILayout.PropertyField(spStartGrowthOnAwake);

            serializedObject.ApplyModifiedProperties();
        }
コード例 #4
0
ファイル: IvyCaster.cs プロジェクト: AndreasGoettig/cmn6302
        public void CastIvy(IvyPreset ivyPreset, Vector3 position, Quaternion rotation)
        {
            IvyController selectedIvy = GetFreeIvy();

            if (selectedIvy == null)
            {
                IvyController ivyControllerInstance = Instantiate <IvyController>(prefabIvyController);
                ivyControllerInstance.transform.parent = transform;

                selectedIvy = ivyControllerInstance;
                ivys.Add(ivyControllerInstance);
            }

            selectedIvy.transform.position = position;
            selectedIvy.transform.rotation = rotation;
            selectedIvy.transform.Rotate(Vector3.right, -90f);

            selectedIvy.ivyParameters = ivyPreset.ivyParameters;

            selectedIvy.gameObject.SetActive(true);
            selectedIvy.StartGrowth();
        }