コード例 #1
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);
        }
コード例 #2
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);
        }
コード例 #3
0
        public static bool Register(string consoleVariableName, float consoleVariableValue, uint nFlags, string commandHelp, ManagedConsoleVariableFunctionDelegate managedConsoleVariableDelegate, out ICVar newICVar)
        {
            //check if console variable with same name exists
            var existingICVar = Global.gEnv.pConsole.GetCVar(consoleVariableName);

            if (existingICVar != null)
            {
                newICVar = null;
                return(false);
            }

            var pointer = Marshal.GetFunctionPointerForDelegate(s_myDelegate);

            NativeInternals.IConsole.AddConsoleVariableFloat(pointer, consoleVariableName, consoleVariableValue, nFlags, commandHelp);
            newICVar = Global.gEnv.pConsole.GetCVar(consoleVariableName);
            if (newICVar == null)
            {
                return(false);
            }

            var newItem = new ConsoleVariableItem {
                m_icVar = newICVar, m_managedConsoleVariableDelegate = managedConsoleVariableDelegate
            };

            s_variablesDelegates.Add(consoleVariableName, newItem);
            return(true);
        }