예제 #1
0
        protected override void preInitOnScene()
        {
            ammunitionModel = sceneMgr.CreateEntity("Torpedo" + ammunitionID.ToString(), "Torpedo.mesh");
            ammunitionNode  =
                sceneMgr.RootSceneNode.CreateChildSceneNode("Torpedo" + ammunitionID.ToString(),
                                                            hiddenPosition);

            Vector3 oVector = new Vector3(0, 0, -1);

            innerNode =
                ammunitionNode.CreateChildSceneNode("TorpedoInner" + ammunitionID.ToString(), new Vector3(0, 0, 0));
            innerNode.AttachObject(ammunitionModel);

            torpedoAnimation         = new ConstRotateNodeAnimation(innerNode, 75, oVector, "ConstRot");
            torpedoAnimation.Enabled = true;
            torpedoAnimation.Looped  = true;

            if (EngineConfig.DisplayingMinimap)
            {
                minimapItem =
                    new MinimapItem(ammunitionNode, framework.MinimapMgr, "Cube.mesh", ColourValue.White,
                                    ammunitionModel);
                minimapItem.ScaleOverride = new Vector2(4, 2);
                minimapItem.Refresh();
                minimapItem.Hide();
            }

            ammunitionNode.SetVisible(false);
            innerNode.SetVisible(false);
        }
예제 #2
0
        public override void Dispose()
        {
            if (EngineConfig.DisplayingMinimap && minimapItem != null)
            {
                minimapItem.Dispose();
                minimapItem = null;
            }
            if (innerNode != null)
            {
                innerNode.DetachAllObjects();
                innerNode.Dispose();
                innerNode = null;
            }
            if (ammunitionModel != null)
            {
                ammunitionModel.Dispose();
                ammunitionModel = null;
            }
            missileAnimation = null;

            if (ammunitionNode != null)
            {
                ammunitionNode.DetachAllObjects();
                ammunitionNode.Dispose();
                ammunitionNode = null;
            }
        }
예제 #3
0
        public override void Dispose()
        {
            if (EngineConfig.DisplayingMinimap)
            {
                minimapItem.Dispose();
                minimapItem = null;
            }
            innerNode.DetachAllObjects();
            innerNode.Dispose();
            innerNode = null;
            ammunitionModel.Dispose();
            ammunitionModel = null;

            torpedoAnimation = null;
            ammunitionNode.DetachAllObjects();
            ammunitionNode.Dispose();
            ammunitionNode = null;
        }
예제 #4
0
        protected override void preInitOnScene()
        {
            ammunitionModel = sceneMgr.CreateEntity("BunkerShell" + ammunitionID.ToString(), "FlakBullet.mesh");
            ammunitionNode  =
                sceneMgr.RootSceneNode.CreateChildSceneNode("BunkerShell" + ammunitionID.ToString(),
                                                            hiddenPosition);

            Vector3 oVector = new Vector3(0, 0, -1);

            innerNode =
                ammunitionNode.CreateChildSceneNode("BunkerShellInner" + ammunitionID.ToString(), new Vector3(0, 0, 0));
            innerNode.AttachObject(ammunitionModel);

            missileAnimation         = new ConstRotateNodeAnimation(innerNode, 75, oVector, "ConstRot");
            missileAnimation.Enabled = true;
            missileAnimation.Looped  = true;


            ammunitionNode.SetVisible(false);
            innerNode.SetVisible(false);
        }
예제 #5
0
        //Deprecated
        protected void initOnScene()
        {
            ammunitionModel = sceneMgr.CreateEntity("Torpedo" + ammunitionID.ToString(), "Torpedo.mesh");
            ammunitionNode  =
                sceneMgr.RootSceneNode.CreateChildSceneNode("Torpedo" + ammunitionID.ToString(), new Vector3(0, 0, 0));

            Vector3 oVector = new Vector3(0, 0, -1);

            innerNode =
                ammunitionNode.CreateChildSceneNode("TorpedoInner" + ammunitionID.ToString(), new Vector3(0, 0, 0));
            innerNode.AttachObject(ammunitionModel);

            torpedoAnimation         = new ConstRotateNodeAnimation(innerNode, 75, oVector, "ConstRot");
            torpedoAnimation.Enabled = false; // wy³¹czam obroty
            torpedoAnimation.Looped  = true;

            if (ammunition.Direction == Direction.Right)
            {
                ammunitionNode.Orientation = new Quaternion(Math.HALF_PI, Vector3.NEGATIVE_UNIT_Y);
            }
            else
            {
                ammunitionNode.Orientation = new Quaternion(Math.HALF_PI, Vector3.UNIT_Y);
            }

            ammunitionNode.Orientation *= new Quaternion((float)ammunition.Angle, Vector3.UNIT_X);


            if (EngineConfig.DisplayingMinimap)
            {
                minimapItem =
                    new MinimapItem(ammunitionNode, framework.MinimapMgr, "Cube.mesh", ColourValue.White,
                                    ammunitionModel);
                minimapItem.ScaleOverride = new Vector2(4, 2);
                minimapItem.Refresh();
            }

            refreshPosition();
        }
예제 #6
0
        protected override void initOnScene()
        {
            if (tileViews != null && tileViews.Count != 9)
            {
                return;
            }

            storagePlanes  = new List <PlaneView>();
            arrestingWires = new List <SceneNode>();

            // CARRIER

            if (EngineConfig.LowDetails)
            {
                compositeModel = sceneMgr.CreateEntity(name, "Carrier_low.mesh");
            }
            else
            {
                compositeModel = sceneMgr.CreateEntity(name, "Carrier.mesh");
                //  compositeModel = sceneMgr.CreateEntity(name, "Carrier_low.mesh");
            }

            compositeModel.CastShadows = EngineConfig.ShadowsQuality > 0;


            carrierAerial1 = sceneMgr.CreateEntity(name + "Aerial1", "Aerial1.mesh");
            carrierAerial2 = sceneMgr.CreateEntity(name + "Aerial2", "Aerial2.mesh");
            // compositeModel.SetMaterialName("Carrier");
            mainNode.AttachObject(compositeModel);

            if (EngineConfig.LowDetails)
            {
                carrierHangar = sceneMgr.CreateEntity(name + "Hangar", "HangarFloor_low.mesh");
            }
            else
            {
                carrierHangar = sceneMgr.CreateEntity(name + "Hangar", "HangarFloor.mesh");
            }
            carrierHangar.CastShadows = false;

            carrierHangarNode = mainNode.CreateChildSceneNode(name + "HangarNode", Vector3.ZERO);

            carrierHangarNode.AttachObject(carrierHangar);



            carrierAerial1Node = mainNode.CreateChildSceneNode(name + "Aerial1Node", new Vector3(-8.6f, 9.1f, 5.7f - 47.8f));
            carrierAerial1Node.AttachObject(carrierAerial1);

            carrierAerial2Node = mainNode.CreateChildSceneNode(name + "Aerial2Node", new Vector3(-10.7f, 4.0f, 12.6f - 47.8f));
            carrierAerial2Node.AttachObject(carrierAerial2);

            Vector3 oVector = new Vector3(0, 1, 0);

            aerialAnimation1         = new ConstRotateNodeAnimation(carrierAerial1Node, 40, oVector, "ConstRot");
            aerialAnimation1.Enabled = true;
            aerialAnimation1.Looped  = true;

            aerialAnimation2         = new ConstRotateNodeAnimation(carrierAerial2Node, -15, oVector, "ConstRot");
            aerialAnimation2.Enabled = true;
            aerialAnimation2.Looped  = true;

            EffectsManager.Singleton.RectangularEffect(sceneMgr, mainNode, name + "lWaterTrailNode", EffectsManager.EffectType.WATERTRAIL, new Vector3(-4.6f, -5.6f, -41.0f - 47.5f), new Vector2(17, 12), new Quaternion(new Radian(new Degree(90)), Vector3.NEGATIVE_UNIT_Y), true);

            EffectsManager.Singleton.RectangularEffect(sceneMgr, mainNode, name + "rWaterTrailNode", EffectsManager.EffectType.WATERTRAIL, new Vector3(4.6f, -5.6f, -41.0f - 47.5f), new Vector2(17, 12), new Quaternion(new Radian(new Degree(90)), Vector3.NEGATIVE_UNIT_Y), true);

            adEntity = sceneMgr.CreateEntity(name + "AdEntity", "TwoSidedPlane.mesh");
            adNode   = mainNode.CreateChildSceneNode(name + "AdNode", new Vector3(0.0f, 9.1f, 5.7f - 47.8f));
            adNode.AttachObject(adEntity);
            adNode.SetVisible(false);

            float adjust = LevelView.TileWidth * 1.7f;

            // CARRIER

            if (!backgroundDummy)
            {
                InitArrestingWires();

                AddCrew();

                InitLights(new ColourValue(0.9f, 0.2f, 0.0f), new ColourValue(0.0f, 0.2f, 0.9f));

                CrewStatePlaneOnCarrier();

                mainNode.Translate(new Vector3(UnitConverter.LogicToWorldUnits(firstTileIndex), 5, -1.0f));
                mainNode.SetDirection(Vector3.UNIT_X);
                //  mainNode.Roll(-Math.HALF_PI / 6.0f);
                if (EngineConfig.DisplayingMinimap)
                {
                    minimapItem =
                        new MinimapItem(mainNode, framework.MinimapMgr, "CarrierMinimap.mesh",
                                        new ColourValue(0.162f, 0.362f, 0.59f), compositeModel);
                    minimapItem.ScaleOverride = new Vector2(0, 15); // stala wysokosc, niezale¿na od bounding box
                    minimapItem.Refresh();
                }
            }
            else
            {
                initFlag(new Vector3(0, 0, -45));
                mainNode.Translate(new Vector3(-800.0f, 5, UnitConverter.LogicToWorldUnits(firstTileIndex) + 1000));
                InitLights(new ColourValue(0.9f, 0.2f, 0.0f), new ColourValue(0.0f, 0.9f, 0.1f));
            }
        }