Exemplo n.º 1
0
        public static void UpdateGunShot(MyEntity physObject, MyTrailerGunsShotTypeEnum gunShot)
        {
            //  This method will be called even on not-tracker objects, so here we check if we need to store data about this one
            MyPhysObjectTrackedTickData tickData = InsertActiveTick(physObject);

            if (tickData != null)
            {
                tickData.GunShot = gunShot;
            }
        }
Exemplo n.º 2
0
 public static void UpdatePositionsAndOrientations()
 {
     foreach (KeyValuePair <MyEntity, MyTrailerSaveObjectHolder> kvp in m_trackedPhysObjects)
     {
         MyPhysObjectTrackedTickData tickData = InsertActiveTick(kvp.Key);
         tickData.Position       = kvp.Key.GetPosition();
         tickData.Orientation    = kvp.Key.WorldMatrix;
         tickData.ReflectorLevel = ((MySmallShip)kvp.Key).Config.ReflectorLight.Level;
         tickData.EngineLevel    = ((MySmallShip)kvp.Key).Config.Engine.Level;
     }
 }
Exemplo n.º 3
0
        static void AttachPhysObjectFullPath(MyEntity physObject, string fullPath)
        {
            MyMwcLog.WriteLine("MyTrailedLoad.AttachPhysObject - START", LoggingOptions.TRAILERS);
            MyMwcLog.IncreaseIndent(LoggingOptions.TRAILERS);

            Dictionary <int, MyPhysObjectTrackedTickData> ticks = new Dictionary <int, MyPhysObjectTrackedTickData>(MyTrailerConstants.MAX_TRACKED_TICKS);

            MyMwcLog.WriteLine("File: " + fullPath, LoggingOptions.TRAILERS);

            //  Open file, BinaryReader must use ASCII encoding, otherwise PeekChar will have problems when trying to convert some values to chars
            using (FileStream fs = File.OpenRead(fullPath))
            {
                using (BinaryReader br = new BinaryReader(fs, Encoding.ASCII))
                {
                    int tickIndex = 0;
                    while (br.PeekChar() != -1)
                    {
                        MyPhysObjectTrackedTickData tickData = new MyPhysObjectTrackedTickData();

                        MyUtils.BinaryRead(br, ref tickData.Position);
                        MyUtils.BinaryRead(br, ref tickData.Orientation);
                        tickData.ReflectorLevel = br.ReadSingle();
                        tickData.EngineLevel    = br.ReadSingle();

                        int gunShot = br.ReadInt32();
                        if (gunShot == -1)
                        {
                            tickData.GunShot = null;
                        }
                        else
                        {
                            tickData.GunShot = (MyTrailerGunsShotTypeEnum)gunShot;
                        }

                        ticks.Add(tickIndex, tickData);
                        tickIndex++;
                    }

                    MyMwcLog.WriteLine("Ticks: " + ticks.Count, LoggingOptions.TRAILERS);
                    MyMwcLog.WriteLine("Milliseconds: " + TicksToMilliseconds(ticks.Count), LoggingOptions.TRAILERS);
                }
            }

            m_attachedPhysObjects.Add(physObject, ticks);

            MyMwcLog.DecreaseIndent(LoggingOptions.TRAILERS);
            MyMwcLog.WriteLine("MyTrailedLoad.AttachPhysObject - END", LoggingOptions.TRAILERS);
        }
Exemplo n.º 4
0
        //  Adds data for active tick into the list. First we check if data for this thick doesn't exist and if not, add it.
        static MyPhysObjectTrackedTickData InsertActiveTick(MyEntity physObject)
        {
            MyTrailerSaveObjectHolder ticks;

            //  This method will be called even on not-tracker objects, so here we check if we need to store data about this one
            if (m_trackedPhysObjects.TryGetValue(physObject, out ticks) == true)
            {
                MyPhysObjectTrackedTickData tickData;

                if (ticks.Ticks.TryGetValue(m_activeTick, out tickData) == true)
                {
                    return(tickData);
                }

                tickData = new MyPhysObjectTrackedTickData();
                ticks.Ticks.Add(m_activeTick, tickData);
                return(tickData);
            }

            return(null);
        }
Exemplo n.º 5
0
        //  Adds data for active tick into the list. First we check if data for this thick doesn't exist and if not, add it.
        static MyPhysObjectTrackedTickData InsertActiveTick(MyEntity physObject)
        {
            MyTrailerSaveObjectHolder ticks;

            //  This method will be called even on not-tracker objects, so here we check if we need to store data about this one
            if (m_trackedPhysObjects.TryGetValue(physObject, out ticks) == true)
            {
                MyPhysObjectTrackedTickData tickData;

                if (ticks.Ticks.TryGetValue(m_activeTick, out tickData) == true)
                {
                    return tickData;
                }

                tickData = new MyPhysObjectTrackedTickData();
                ticks.Ticks.Add(m_activeTick, tickData);
                return tickData;
            }

            return null;
        }