Exemplo n.º 1
0
        /**
         * <summary>Creates a new instance of the 'Object: Record transform' Action</summary>
         * <param name = "objectToRecord">The GameObject whose transform to record</param>
         * <param name = "recordType">The type of recording to take</param>
         * <param name = "inWorldSpace">If True, the GameObjects's transform values will be read in world space</param>
         * <param name = "variableLocation">The location of the Vector3 variable to store the values</param>
         * <param name = "variableID">The ID number of the Vector3 variable to store the values</param>
         * <param name = "variables">The variable's associated Variables component, if a Component Variable</param>
         * <returns>The generated Action</returns>
         */
        public static ActionTransformRecord CreateNew(GameObject objectToRecord, TransformRecordType recordType, bool inWorldSpace, VariableLocation variableLocation, int variableID, Variables variables = null)
        {
            ActionTransformRecord newAction = (ActionTransformRecord)CreateInstance <ActionTransformRecord>();

            newAction.obToRead            = objectToRecord;
            newAction.transformRecordType = recordType;
            newAction.transformLocation   = (inWorldSpace) ? GlobalLocal.Global : GlobalLocal.Local;
            newAction.variableLocation    = variableLocation;
            newAction.variableID          = variableID;
            newAction.variables           = variables;
            return(newAction);
        }
        override public void ShowGUI(List <ActionParameter> parameters)
        {
            obToReadParameterID = Action.ChooseParameterGUI("Object to record:", parameters, obToReadParameterID, ParameterType.GameObject);
            if (obToReadParameterID >= 0)
            {
                obToReadConstantID = 0;
                obToRead           = null;
            }
            else
            {
                obToRead = (GameObject)EditorGUILayout.ObjectField("Object to record:", obToRead, typeof(GameObject), true);

                obToReadConstantID = FieldToID(obToRead, obToReadConstantID);
                obToRead           = IDToField(obToRead, obToReadConstantID, false);
            }

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Record:", GUILayout.MaxWidth(100f));
            transformLocation   = (VariableLocation)EditorGUILayout.EnumPopup(transformLocation);
            transformRecordType = (TransformRecordType)EditorGUILayout.EnumPopup(transformRecordType);
            EditorGUILayout.EndHorizontal();

            if (isAssetFile)
            {
                variableLocation = VariableLocation.Global;
            }
            else
            {
                variableLocation = (VariableLocation)EditorGUILayout.EnumPopup("Variable location:", variableLocation);
            }

            if (variableLocation == VariableLocation.Global)
            {
                variableID = AdvGame.GlobalVariableGUI("Record to variable:", variableID, VariableType.Vector3);
            }
            else if (variableLocation == VariableLocation.Local)
            {
                variableID = AdvGame.LocalVariableGUI("Record to variable:", variableID, VariableType.Vector3);
            }

            AfterRunningOption();
        }
        override public void ShowGUI(List <ActionParameter> parameters)
        {
            obToReadParameterID = Action.ChooseParameterGUI("Object to record:", parameters, obToReadParameterID, ParameterType.GameObject);
            if (obToReadParameterID >= 0)
            {
                obToReadConstantID = 0;
                obToRead           = null;
            }
            else
            {
                obToRead = (GameObject)EditorGUILayout.ObjectField("Object to record:", obToRead, typeof(GameObject), true);

                obToReadConstantID = FieldToID(obToRead, obToReadConstantID);
                obToRead           = IDToField(obToRead, obToReadConstantID, false);
            }

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Record:", GUILayout.MaxWidth(100f));
            transformLocation   = (GlobalLocal)EditorGUILayout.EnumPopup(transformLocation);
            transformRecordType = (TransformRecordType)EditorGUILayout.EnumPopup(transformRecordType);
            EditorGUILayout.EndHorizontal();

            variableLocation = (VariableLocation)EditorGUILayout.EnumPopup("Variable location:", variableLocation);

            switch (variableLocation)
            {
            case VariableLocation.Global:
                variableParameterID = Action.ChooseParameterGUI("Record to variable:", parameters, variableParameterID, ParameterType.GlobalVariable);
                if (variableParameterID < 0)
                {
                    variableID = AdvGame.GlobalVariableGUI("Record to variable:", variableID, VariableType.Vector3);
                }
                break;

            case VariableLocation.Local:
                if (!isAssetFile)
                {
                    variableParameterID = Action.ChooseParameterGUI("Record to variable:", parameters, variableParameterID, ParameterType.LocalVariable);
                    if (variableParameterID < 0)
                    {
                        variableID = AdvGame.LocalVariableGUI("Record to variable:", variableID, VariableType.Vector3);
                    }
                }
                else
                {
                    EditorGUILayout.HelpBox("Local variables cannot be accessed in ActionList assets.", MessageType.Info);
                }
                break;

            case VariableLocation.Component:
                variableParameterID = Action.ChooseParameterGUI("Record to variable:", parameters, variableParameterID, ParameterType.ComponentVariable);
                if (variableParameterID >= 0)
                {
                    variables           = null;
                    variablesConstantID = 0;
                }
                else
                {
                    variables           = (Variables)EditorGUILayout.ObjectField("Component:", variables, typeof(Variables), true);
                    variablesConstantID = FieldToID <Variables> (variables, variablesConstantID);
                    variables           = IDToField <Variables> (variables, variablesConstantID, false);

                    if (variables != null)
                    {
                        variableID = AdvGame.ComponentVariableGUI("Record to variable:", variableID, VariableType.Vector3, variables);
                    }
                }
                break;
            }

            AfterRunningOption();
        }