public override void AddRenderObjects() { if (this.Models.Count != 0) { MyCubeBlock entity = base.Container.Entity as MyCubeBlock; if (entity != null) { this.CalculateBlockDepthBias(entity); } base.m_renderObjectIDs = new uint[this.Models.Count + 1]; base.m_parentIDs = new uint[this.Models.Count + 1]; base.m_parentIDs[0] = base.m_renderObjectIDs[0] = uint.MaxValue; string name = base.Container.Entity.Name; this.SetRenderObjectID(0, MyRenderProxy.CreateManualCullObject(name ?? "Fracture", base.Container.Entity.PositionComp.WorldMatrix)); for (int i = 0; i < this.Models.Count; i++) { base.m_parentIDs[i + 1] = base.m_renderObjectIDs[i + 1] = uint.MaxValue; long entityId = base.Container.Entity.EntityId; this.SetRenderObjectID(i + 1, MyRenderProxy.CreateRenderEntity("Fractured piece " + i.ToString() + " " + entityId.ToString(), this.Models[i].Name, this.Models[i].LocalTransform, MyMeshDrawTechnique.MESH, this.GetRenderFlags(), this.GetRenderCullingOptions(), base.m_diffuseColor, base.m_colorMaskHsv, 0f, float.MaxValue, base.DepthBias, 1f, base.FadeIn)); if (base.m_textureChanges != null) { MyRenderProxy.ChangeMaterialTexture(base.m_renderObjectIDs[i + 1], base.m_textureChanges); } base.SetParent(i + 1, base.m_renderObjectIDs[0], new Matrix?((Matrix)this.Models[i].LocalTransform)); } } }
public void ChangeTexture(int area, string path) { if (area < this.m_screenAreas.Count) { Color?nullable; float?nullable2; if (string.IsNullOrEmpty(path)) { for (int i = 0; i < this.m_screenAreas[area].RenderObjectIDs.Length; i++) { if (this.m_screenAreas[area].RenderObjectIDs[i] != uint.MaxValue) { MyRenderProxy.ChangeMaterialTexture(this.m_screenAreas[area].RenderObjectIDs[i], this.m_screenAreas[area].Material, null, null, null, null); nullable = null; nullable2 = null; MyRenderProxy.UpdateModelProperties(this.m_screenAreas[area].RenderObjectIDs[i], this.m_screenAreas[area].Material, 0, RenderFlags.Visible, nullable, nullable2); } } } else { for (int i = 0; i < this.m_screenAreas[area].RenderObjectIDs.Length; i++) { if (this.m_screenAreas[area].RenderObjectIDs[i] != uint.MaxValue) { MyRenderProxy.ChangeMaterialTexture(this.m_screenAreas[area].RenderObjectIDs[i], this.m_screenAreas[area].Material, path, null, null, null); nullable = null; nullable2 = null; MyRenderProxy.UpdateModelProperties(this.m_screenAreas[area].RenderObjectIDs[i], this.m_screenAreas[area].Material, RenderFlags.Visible, 0, nullable, nullable2); } } } } }
public void ChangeTexture(string path) { MyRenderProxy.ChangeMaterialTexture(this.RenderObjectIDs[0], PANEL_MATERIAL_NAME, path); if (RenderObjectIDs[0] != MyRenderProxy.RENDER_ID_UNASSIGNED) { MyRenderProxy.UpdateModelProperties(this.RenderObjectIDs[0], 0, -1, PANEL_MATERIAL_NAME, null, null, 1); } }
public override void AddRenderObjects() { if ((this.m_model != null) && (base.m_renderObjectIDs[0] == uint.MaxValue)) { this.SetRenderObjectID(0, MyRenderProxy.CreateRenderEntity(base.Container.Entity.GetFriendlyName() + " " + base.Container.Entity.EntityId.ToString(), this.m_model.AssetName, base.Container.Entity.PositionComp.WorldMatrix, MyMeshDrawTechnique.MESH, this.GetRenderFlags(), this.GetRenderCullingOptions(), base.m_diffuseColor, base.m_colorMaskHsv, base.Transparency, float.MaxValue, base.DepthBias, this.m_model.ScaleFactor, (base.Transparency == 0f) && base.FadeIn)); if (base.m_textureChanges != null) { MyRenderProxy.ChangeMaterialTexture(base.m_renderObjectIDs[0], base.m_textureChanges); } } }
private void InitInternal() { float?scale = null; base.Init(null, this.m_definition.Model, null, scale, null); base.Render.ColorMaskHsv = this.m_definition.ColorHSV; base.Render.Transparency = 0.25f; base.Render.AddRenderObjects(); MyRenderProxy.ChangeMaterialTexture(base.Render.RenderObjectIDs[0], "BotFlag", this.m_definition.ColorMetalTexture, null, this.m_definition.AddMapsTexture, null); this.m_localActivationMatrix = MatrixD.CreateScale(base.PositionComp.LocalAABB.HalfExtents * 2f) * MatrixD.CreateTranslation(base.PositionComp.LocalAABB.Center); HkBoxShape shape = new HkBoxShape((Vector3)this.m_localActivationMatrix.Scale); MyPhysicsBody body = new MyPhysicsBody(this, RigidBodyFlag.RBF_DISABLE_COLLISION_RESPONSE); base.Physics = body; HkMassProperties?massProperties = null; body.CreateFromCollisionObject((HkShape)shape, Vector3.Zero, base.WorldMatrix, massProperties, 0x18); body.Enabled = true; base.Components.Add <MyPlaceArea>(new MySpherePlaceArea(10f, this.m_definition.Id.SubtypeId)); this.AddHudMarker(); }
private unsafe void UpdateRenderEntitiesInstanceData(RenderFlags renderFlags, uint parentCullObject) { foreach (KeyValuePair <MyInstanceBucket, MyRenderInstanceInfo> pair in this.m_instanceInfo) { uint num; bool inScene; int num1; bool flag = this.m_instanceGroupRenderObjects.TryGetValue(pair.Key, out num); if (pair.Value.InstanceCount <= 0) { inScene = false; } else { IMyEntity entity = this.m_gridRenderComponent.Entity; if (entity != null) { inScene = entity.InScene; } else { IMyEntity local1 = entity; inScene = false; } } bool flag2 = (bool)num1; RenderFlags flags = renderFlags; if (!(!flag & flag2)) { if (flag && !flag2) { uint renderObjectId = this.m_instanceGroupRenderObjects[pair.Key]; this.RemoveRenderObjectId(!MyFakes.MANUAL_CULL_OBJECTS, ref renderObjectId, MyRenderProxy.ObjectType.Entity); this.m_instanceGroupRenderObjects.Remove(pair.Key); continue; } } else { uint * numPtr1; object[] objArray1 = new object[] { "CubeGridRenderCell ", this.m_gridRenderComponent.Container.Entity.DisplayName, " ", this.m_gridRenderComponent.Container.Entity.EntityId, ", part: ", pair.Key }; this.AddRenderObjectId(!MyFakes.MANUAL_CULL_OBJECTS, out (uint)ref numPtr1, MyRenderProxy.CreateRenderEntity(string.Concat(objArray1), MyModel.GetById(pair.Key.ModelId), this.m_gridRenderComponent.Container.Entity.PositionComp.WorldMatrix, MyMeshDrawTechnique.MESH, flags, CullingOptions.Default, this.m_gridRenderComponent.GetDiffuseColor(), Vector3.Zero, this.m_gridRenderComponent.Transparency, pair.Value.MaxViewDistance, 0, this.m_gridRenderComponent.CubeGrid.GridScale, (this.m_gridRenderComponent.Transparency == 0f) && this.m_gridRenderComponent.FadeIn)); if (pair.Key.SkinSubtypeId != MyStringHash.NullOrEmpty) { Dictionary <string, MyTextureChange> assetModifierDefinitionForRender = MyDefinitionManager.Static.GetAssetModifierDefinitionForRender(pair.Key.SkinSubtypeId); if (assetModifierDefinitionForRender != null) { numPtr1 = (uint *)ref num; MyRenderProxy.ChangeMaterialTexture(num, assetModifierDefinitionForRender); } } this.m_instanceGroupRenderObjects[pair.Key] = num; if (MyFakes.MANUAL_CULL_OBJECTS) { MyRenderProxy.SetParentCullObject(num, parentCullObject, new Matrix?(Matrix.Identity)); } } if (flag2) { MyRenderProxy.SetInstanceBuffer(num, pair.Value.InstanceBufferId, pair.Value.InstanceStart, pair.Value.InstanceCount, this.m_boundingBox, null); } } }
public void ChangeTexture(string path) { MyRenderProxy.ChangeMaterialTexture(this.RenderObjectIDs[0], PANEL_MATERIAL_NAME, path); }