Exemplo n.º 1
0
 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));
         }
     }
 }
Exemplo n.º 2
0
 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);
                 }
             }
         }
     }
 }
Exemplo n.º 3
0
 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);
     }
 }
Exemplo n.º 4
0
 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);
         }
     }
 }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
 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);
 }