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; } }
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; } }
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); }
// 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); }
// 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; }