private void PostProcessModules() { if (!GameHead.instance.isPreviewOrRuntime) { return; } ModulePhysicsSettings modulePhysicsSettings = null; int[] keys = _idModuleMap.Keys.ToArray(); foreach (int key in keys) { Module module = _idModuleMap[key]; if (module is ModuleArt) { MeshCollider meshCollider = module.GetComponent <MeshCollider>(); if (meshCollider != null) { meshCollider.convex = false; } } if (module.inspectionData.forceHideAtRuntime) { Renderer[] renderers = module.GetComponentsInChildren <Renderer>(); foreach (Renderer renderer in renderers) { if (renderer is ParticleSystemRenderer) { continue; } renderer.enabled = false; } } if (module.inspectionData.forceNoCollisionAtRuntime) { Collider[] colliders = module.GetComponentsInChildren <Collider>(); foreach (Collider collider in colliders) { collider.enabled = false; } } if (module.inspectionData.category == ModuleCategory.Mechanical || module.inspectionData.category == ModuleCategory.Scripting || module.inspectionData.category == ModuleCategory.Environment) { Renderer[] renderers = module.GetComponentsInChildren <Renderer>(); foreach (Renderer renderer in renderers) { renderer.enabled = false; } Collider[] colliders = module.GetComponentsInChildren <Collider>(); foreach (Collider collider in colliders) { collider.enabled = false; } } } }
private void PostProcessModules() { if (!GameHead.instance.isPreviewOrRuntime) { return; } ModulePhysicsSettings modulePhysicsSettings = null; foreach (KeyValuePair <int, Module> entry in _idModuleMap) { Module module = entry.Value; { if (module is ModulePhysicsSettings) { modulePhysicsSettings = (ModulePhysicsSettings)module; } if (rigidbody == null) { if (module is ModulePhysicsController || module is ModulePhysicsVelocityApplier || module is ModulePhysicsSettings) { rigidbody = base.gameObject.AddComponent <Rigidbody>(); rigidbody.collisionDetectionMode = CollisionDetectionMode.ContinuousSpeculative; } } if (module is ModulePhysicsImpactSensor) { _components.modulePhysicsImpactSensor = (ModulePhysicsImpactSensor)module; } if (module is ModuleArt) { MeshCollider meshCollider = module.GetComponent <MeshCollider>(); if (meshCollider != null) { meshCollider.convex = true; } } if (module.inspectionData.forceHideAtRuntime) { Renderer[] renderers = module.GetComponentsInChildren <Renderer>(); foreach (Renderer renderer in renderers) { if (renderer is ParticleSystemRenderer) { continue; } renderer.enabled = false; } } if (module.inspectionData.forceNoCollisionAtRuntime) { Collider[] colliders = module.GetComponentsInChildren <Collider>(); foreach (Collider collider in colliders) { collider.enabled = false; } } if (module.inspectionData.category == ModuleCategory.Mechanical || module.inspectionData.category == ModuleCategory.Scripting || module.inspectionData.category == ModuleCategory.Environment) { Renderer[] renderers = module.GetComponentsInChildren <Renderer>(); foreach (Renderer renderer in renderers) { renderer.enabled = false; } Collider[] colliders = module.GetComponentsInChildren <Collider>(); foreach (Collider collider in colliders) { collider.enabled = false; } } } if (modulePhysicsSettings != null) { ModulePhysicsSettingsData modulePhysicsSettingsData = (ModulePhysicsSettingsData)modulePhysicsSettings.data; rigidbody.drag = modulePhysicsSettingsData.drag; rigidbody.drag = modulePhysicsSettingsData.angularDrag; rigidbody.useGravity = modulePhysicsSettingsData.usesGravity; if (modulePhysicsSettingsData.freezeRotationX) { rigidbody.constraints = rigidbody.constraints | RigidbodyConstraints.FreezeRotationX; } if (modulePhysicsSettingsData.freezeRotationY) { rigidbody.constraints = rigidbody.constraints |= RigidbodyConstraints.FreezeRotationY; } if (modulePhysicsSettingsData.freezeRotationZ) { rigidbody.constraints = rigidbody.constraints | RigidbodyConstraints.FreezeRotationZ; } if (modulePhysicsSettingsData.freezePositionX) { rigidbody.constraints = rigidbody.constraints | RigidbodyConstraints.FreezePositionX; } if (modulePhysicsSettingsData.freezePositionY) { rigidbody.constraints = rigidbody.constraints | RigidbodyConstraints.FreezePositionY; } if (modulePhysicsSettingsData.freezePositionZ) { rigidbody.constraints = rigidbody.constraints | RigidbodyConstraints.FreezePositionZ; } PhysicMaterial physicMaterial = new PhysicMaterial(); physicMaterial.dynamicFriction = modulePhysicsSettingsData.friction; Collider[] colliders = base.gameObject.GetComponentsInChildren <Collider>(); foreach (Collider collider in colliders) { collider.sharedMaterial = physicMaterial; } } } }