Ejemplo n.º 1
0
        void Start()
        {
            if (gameObject.GetComponent <MeshFilter>() == null)
            {
                return;
            }
            isInitialize = true;
            nvFracture   = NvFracture.GetNvFractureInstance();
            collider     = GetComponents <Collider>();
            if (outsideMaterial == null)
            {
                render          = gameObject.GetComponent <MeshRenderer>();
                outsideMaterial = render.sharedMaterial;
            }
            if (setting == null)
            {
                setting = Resources.Load <NvSetting>("NvSetting/NvFractureSetting");
            }
            if (setting != null)
            {
                nvFractureRead = setting.ToNvFractureRead();
                if (insideMaterial == null)
                {
                    insideMaterial = setting.insideMaterial;
                }
            }

            if (nvFractureRead.chunkCount == 0)
            {
                nvFractureRead = NvFractureRead.GetDefaultFractureRead();
            }
        }
Ejemplo n.º 2
0
        private static int GetConfig(ServiceCtx Context)
        {
            if (!IsProductionMode)
            {
                long InputPosition  = Context.Request.GetBufferType0x21().Position;
                long OutputPosition = Context.Request.GetBufferType0x22().Position;

                string Domain = MemoryHelper.ReadAsciiString(Context.Memory, InputPosition + 0, 0x41);
                string Name   = MemoryHelper.ReadAsciiString(Context.Memory, InputPosition + 0x41, 0x41);

                if (Set.NxSettings.Settings.TryGetValue($"{Domain}!{Name}", out object NvSetting))
                {
                    byte[] SettingBuffer = new byte[0x101];

                    if (NvSetting is string StringValue)
                    {
                        if (StringValue.Length > 0x100)
                        {
                            Logger.PrintError(LogClass.ServiceNv, $"{Domain}!{Name} String value size is too big!");
                        }
                        else
                        {
                            SettingBuffer = Encoding.ASCII.GetBytes(StringValue + "\0");
                        }
                    }

                    if (NvSetting is int IntValue)
                    {
                        SettingBuffer = BitConverter.GetBytes(IntValue);
                    }
                    else if (NvSetting is bool BoolValue)
                    {
                        SettingBuffer[0] = BoolValue ? (byte)1 : (byte)0;
                    }
                    else
                    {
                        throw new NotImplementedException(NvSetting.GetType().Name);
                    }

                    Context.Memory.WriteBytes(OutputPosition + 0x82, SettingBuffer);

                    Logger.PrintDebug(LogClass.ServiceNv, $"Got setting {Domain}!{Name}");
                }

                return(NvResult.Success);
            }

            return(NvResult.NotAvailableInProduction);
        }