private void CreateCenterSphere(MyEntity block) { if (block == null || m_centerSphere != null) { return; } MyEntitySubpart centerSphereSubpart; if (block.TryGetSubpart("sphere", out centerSphereSubpart)) { m_centerSphere = centerSphereSubpart as MyEntity; if (m_centerSphere == null) { return; } m_centerSphere.Render.EnableColorMaskHsv = true; m_centerSphere.Render.ColorMaskHsv = block.Render.ColorMaskHsv; m_centerSphere.Render.PersistentFlags = MyPersistentEntityFlags2.CastShadows; m_centerSphere.PositionComp.LocalMatrix = Matrix.CreateFromTransformScale(Quaternion.Identity, new Vector3(0f, -1.0f, 0f), Vector3.One); m_centerSphere.Flags = EntityFlags.Visible | EntityFlags.NeedsDraw | EntityFlags.NeedsDrawFromParent | EntityFlags.InvalidateOnMove; m_centerSphere.OnAddedToScene(block); MyCubeBlockEmissive.SetEmissiveParts(m_centerSphere, 0.0f, Color.FromNonPremultiplied(new Vector4(0.35f, 0.05f, 0.35f, 0.75f)), Color.White); } }
MyEntity LoadDisplay() { if (m_block == null) { return(null); } string model = "Display_" + m_block.BlockDefinition.SubtypeId + ".mwm"; MyEntity entity; entity = new MyEntity(); entity.Init(null, GetModelsFolder() + model, (MyEntity)m_block, null, null); entity.Render.EnableColorMaskHsv = true; entity.Render.ColorMaskHsv = m_block.Render.ColorMaskHsv; entity.Render.PersistentFlags = MyPersistentEntityFlags2.CastShadows; entity.PositionComp.LocalMatrix = Matrix.CreateFromTransformScale( Quaternion.Identity, Vector3.Zero, Vector3.One); entity.Flags = EntityFlags.NeedsWorldMatrix | EntityFlags.Visible | EntityFlags.NeedsDraw | EntityFlags.NeedsDrawFromParent | EntityFlags.InvalidateOnMove; entity.OnAddedToScene(m_block); return(entity); }
private void CreateMiningHammer(MyEntity block) { if (block == null) { return; } m_hammer = new MyEntity(); m_hammer.Init(null, m_modelsFolder + "NUHOL_Hammer.mwm", block, null, null); m_hammer.Render.EnableColorMaskHsv = true; m_hammer.Render.ColorMaskHsv = block.Render.ColorMaskHsv; m_hammer.Render.PersistentFlags = MyPersistentEntityFlags2.CastShadows; m_hammer.PositionComp.LocalMatrix = Matrix.CreateFromTransformScale(Quaternion.Identity, new Vector3(0f, 1.5f, 0f), Vector3.One); m_hammer.Flags = EntityFlags.Visible | EntityFlags.NeedsDraw | EntityFlags.NeedsDrawFromParent | EntityFlags.InvalidateOnMove; m_hammer.OnAddedToScene(block); MyCubeBlockEmissive.SetEmissiveParts(m_hammer, 0.0f, Color.FromNonPremultiplied(new Vector4(0.3f, 0.15f, 0.0f, 1f)), Color.White); }
/// <summary> /// Add anima part for animation, parent will be one of root's subpart. /// </summary> /// <param name="subpartName">root subpart name.</param> /// <param name="modelFile">>Model file name inside Models folder, excluding extension.</param> /// <param name="smoothAnim">smooth animation, linear lerp between keyframes.</param> /// <param name="visible">initialize it visible?</param> /// <returns>part or null for failure.</returns> public AnimaPart AddPartToSubpart(string subpartName, string modelFile, bool smoothAnim = false, bool visible = true) { if (m_entity == null) return null; if (!m_entity.Subparts.ContainsKey(subpartName)) return null; // Create part MyEntity parentEntity = m_entity.Subparts[subpartName]; MyEntity part_entity = new MyEntity(); part_entity.Init(null, m_modelsFolder + modelFile + ".mwm", parentEntity, null, null); part_entity.Render.EnableColorMaskHsv = true; part_entity.Render.ColorMaskHsv = m_entity.Render.ColorMaskHsv; part_entity.Render.PersistentFlags = MyPersistentEntityFlags2.CastShadows; part_entity.PositionComp.LocalMatrix = Matrix.Identity; part_entity.Flags = EntityFlags.Visible | EntityFlags.NeedsDraw | EntityFlags.NeedsDrawFromParent | EntityFlags.InvalidateOnMove; part_entity.OnAddedToScene(parentEntity); AnimaPart part = new AnimaPart(this, null, part_entity); if (!visible) part.Visible = false; m_partList.Add(part); return part; }