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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        /// <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;
        }