Ejemplo n.º 1
0
        /// <summary>
        /// Unregistered an existing control variable, This unregisters from both control variables that are both registered natively and via managed
        /// </summary>
        /// <param name="consoleVariable">Will be set to null if unregistered successfully</param>
        /// <returns>true if control variable is unregistered successfully</returns>
        public static bool UnRegister(ref ICVar consoleVariable)
        {
            if (consoleVariable == null)
            {
                return(false);
            }
            bool unregistered = false;
            //check if registered via C#
            var consoleVariableName = consoleVariable.GetName();

            if (s_variablesDelegates.ContainsKey(consoleVariableName))
            {
                ConsoleVariableItem consoleVariableItem = null;
                s_variablesDelegates.TryGetValue(consoleVariableName, out consoleVariableItem);
                unregistered = s_variablesDelegates.Remove(consoleVariableName);
                if (unregistered)
                {
                    consoleVariableItem.m_icVar = null;
                    consoleVariableItem.m_managedConsoleVariableDelegate = null;
                }
            }
            // likelihood that console variable is preregistered via C++ and not C#
            Global.gEnv.pConsole.UnregisterVariable(consoleVariableName);
            unregistered |= (Global.gEnv.pConsole.GetCVar(consoleVariableName) == null);
            if (unregistered)
            {
                consoleVariable = null;
            }
            return(unregistered);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Retrieves the managed control variable callback delegate. Only for control variables that are registered via managed
        /// </summary>
        /// <param name="icVar">Any control variable that is registered via managed</param>
        /// <param name="managedConsoleVariableDelegate">the managed control variable delegate if function returns true</param>
        /// <returns>true if the control variable exists</returns>
        public static bool GetManagedConsoleVariableFunctionDelegate(ICVar icVar, out ManagedConsoleVariableFunctionDelegate managedConsoleVariableDelegate)
        {
            var consoleVariableName = icVar.GetName();

            managedConsoleVariableDelegate = null;
            if (!s_variablesDelegates.ContainsKey(consoleVariableName))
            {
                return(false);
            }
            managedConsoleVariableDelegate = s_variablesDelegates[consoleVariableName].m_managedConsoleVariableDelegate;
            return(true);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Changes the control variable callback to the specified delegate.
        /// Note: Only control variables that are registered via managed class CryEngine.ConsoleVariable can be changed. Control Variables that are predefined in system cannot be changed.
        /// </summary>
        /// <param name="icVar"></param>
        /// <param name="managedConsoleVariableDelegate"></param>
        /// <returns></returns>
        public static bool SetManagedConsoleVariableFunctionDelegate(ICVar icVar, ManagedConsoleVariableFunctionDelegate managedConsoleVariableDelegate)
        {
            var consoleVariableName = icVar.GetName();

            if (!s_variablesDelegates.ContainsKey(consoleVariableName))
            {
                return(false);
            }

            //change the console variable item to map to new delegate, the c++ callback "OnConsoleVariableChanged(IntPtr consoleVariableArg)" remains unchanged
            ConsoleVariableItem consoleVariableItem = null;

            s_variablesDelegates.TryGetValue(consoleVariableName, out consoleVariableItem);
            consoleVariableItem.m_managedConsoleVariableDelegate = managedConsoleVariableDelegate;
            return(true);
        }