void GeomTree::Save(Serializer::Writer &wr) const { wr.Int32(m_numVertices); wr.Int32(m_numEdges); wr.Int32(m_numTris); wr.Double(m_radius); wr.Vector3d(m_aabb.max); wr.Vector3d(m_aabb.min); wr.Double(m_aabb.radius); wr.Int32(m_numEdges); for (Sint32 iAabb = 0; iAabb < m_numEdges; ++iAabb) { wr.Vector3d(m_aabbs[iAabb].max); wr.Vector3d(m_aabbs[iAabb].min); wr.Double(m_aabbs[iAabb].radius); } for (Sint32 iEdge = 0; iEdge < m_numEdges; ++iEdge) { m_edges[iEdge].Save(wr); } for (Sint32 iVert = 0; iVert < m_numVertices; ++iVert) { wr.Vector3f(m_vertices[iVert]); } for (Sint32 iIndi = 0; iIndi < (m_numTris * 3); ++iIndi) { wr.Int16(m_indices[iIndi]); } for (Sint32 iTri = 0; iTri < m_numTris; ++iTri) { wr.Int32(m_triFlags[iTri]); } }
void Ship::Save(Serializer::Writer &wr) { DynamicBody::Save(wr); wr.Vector3d(m_angThrusters); wr.Vector3d(m_thrusters); wr.Int32(m_wheelTransition); wr.Float(m_wheelState); wr.Float(m_launchLockTimeout); wr.Bool(m_testLanded); wr.Int32(int(m_flightState)); wr.Int32(int(m_alertState)); wr.Float(m_lastFiringAlert); m_hyperspace.dest.Serialize(wr); wr.Float(m_hyperspace.countdown); for (int i=0; i<ShipType::GUNMOUNT_MAX; i++) { wr.Int32(m_gunState[i]); wr.Float(m_gunRecharge[i]); wr.Float(m_gunTemperature[i]); } wr.Float(m_ecmRecharge); m_shipFlavour.Save(wr); wr.Int32(m_dockedWithPort); wr.Int32(Serializer::LookupBody(m_dockedWith)); m_equipment.Save(wr); wr.Float(m_stats.hull_mass_left); wr.Float(m_stats.shield_mass_left); if(m_curAICmd) { wr.Int32(1); m_curAICmd->Save(wr); } else wr.Int32(0); }
void Projectile::Save(Serializer::Writer &wr, Space *space) { Body::Save(wr, space); wr.Vector3d(m_baseVel); wr.Vector3d(m_dirVel); wr.Float(m_age); wr.Int32(m_type); wr.Int32(space->GetIndexForBody(m_parent)); }
void Projectile::Save(Serializer::Writer &wr, Space *space) { Body::Save(wr, space); for (int i=0; i<16; i++) wr.Double(m_orient[i]); wr.Vector3d(m_baseVel); wr.Vector3d(m_dirVel); wr.Float(m_age); wr.Int32(m_type); wr.Int32(space->GetIndexForBody(m_parent)); }
void DynamicBody::Save(Serializer::Writer &wr, Space *space) { ModelBody::Save(wr, space); wr.Vector3d(m_force); wr.Vector3d(m_torque); wr.Vector3d(m_vel); wr.Vector3d(m_angVel); wr.Double(m_mass); wr.Double(m_massRadius); wr.Double(m_angInertia); wr.Bool(m_isMoving); }
void DynamicBody::Save(Serializer::Writer &wr) { ModelBody::Save(wr); for (int i=0; i<16; i++) wr.Double(m_orient[i]); wr.Vector3d(m_force); wr.Vector3d(m_torque); wr.Vector3d(m_vel); wr.Vector3d(m_angVel); wr.Double(m_mass); wr.Double(m_massRadius); wr.Double(m_angInertia); wr.Bool(m_enabled); }
void SpaceStation::Save(Serializer::Writer &wr) { ModelBody::Save(wr); MarketAgent::Save(wr); wr.Int32(Equip::TYPE_MAX); for (int i=0; i<Equip::TYPE_MAX; i++) { wr.Int32(int(m_equipmentStock[i])); } // save shipyard wr.Int32(m_shipsOnSale.size()); for (std::vector<ShipFlavour>::iterator i = m_shipsOnSale.begin(); i != m_shipsOnSale.end(); ++i) { (*i).Save(wr); } for (int i=0; i<MAX_DOCKING_PORTS; i++) { wr.Int32(Serializer::LookupBody(m_shipDocking[i].ship)); wr.Int32(m_shipDocking[i].stage); wr.Float(float(m_shipDocking[i].stagePos)); wr.Vector3d(m_shipDocking[i].fromPos); wr.WrQuaternionf(m_shipDocking[i].fromRot); wr.Float(float(m_openAnimState[i])); wr.Float(float(m_dockAnimState[i])); } wr.Double(m_lastUpdatedShipyard); wr.Int32(Serializer::LookupSystemBody(m_sbody)); wr.Int32(m_numPoliceDocked); }
void SpaceStation::Save(Serializer::Writer &wr, Space *space) { ModelBody::Save(wr, space); wr.Int32(Equip::TYPE_MAX); wr.Int32(m_shipDocking.size()); for (Uint32 i=0; i<m_shipDocking.size(); i++) { wr.Int32(space->GetIndexForBody(m_shipDocking[i].ship)); wr.Int32(m_shipDocking[i].stage); wr.Float(float(m_shipDocking[i].stagePos)); wr.Vector3d(m_shipDocking[i].fromPos); wr.WrQuaternionf(m_shipDocking[i].fromRot); } // store each of the bay groupings wr.Int32(mBayGroups.size()); for (Uint32 i=0; i<mBayGroups.size(); i++) { wr.Int32(mBayGroups[i].minShipSize); wr.Int32(mBayGroups[i].maxShipSize); wr.Bool(mBayGroups[i].inUse); wr.Int32(mBayGroups[i].bayIDs.size()); for (Uint32 j=0; j<mBayGroups[i].bayIDs.size(); j++) { wr.Int32(mBayGroups[i].bayIDs[j]); } } wr.Int32(space->GetIndexForSystemBody(m_sbody)); wr.Int32(m_numPoliceDocked); wr.Double(m_doorAnimationStep); wr.Double(m_doorAnimationState); m_navLights->Save(wr); }
void AIParagonCmdDock::Save(Serializer::Writer &wr) { if (m_child) { delete m_child; m_child = 0; } AICommand::Save(wr); Space* space = Pi::game->GetSpace(); wr.Int32(space->GetIndexForBody(m_station)); wr.Int32(static_cast<int>(m_state)); wr.Int32(m_approachPoints.size()); for(auto iter : m_approachPoints) { wr.Vector3d(iter.pos); wr.Vector3d(iter.xaxis); wr.Vector3d(iter.yaxis); wr.Vector3d(iter.zaxis); } wr.Int32(m_nextApproachPoint); }
void SpaceStation::Save(Serializer::Writer &wr, Space *space) { ModelBody::Save(wr, space); MarketAgent::Save(wr); wr.Int32(Equip::TYPE_MAX); for (int i=0; i<Equip::TYPE_MAX; i++) { wr.Int32(int(m_equipmentStock[i])); } // save shipyard wr.Int32(m_shipsOnSale.size()); for (std::vector<ShipOnSale>::iterator i = m_shipsOnSale.begin(); i != m_shipsOnSale.end(); ++i) { wr.String((*i).id); wr.String((*i).regId); (*i).skin.Save(wr); } for (int i=0; i<MAX_DOCKING_PORTS; i++) { wr.Int32(space->GetIndexForBody(m_shipDocking[i].ship)); wr.Int32(m_shipDocking[i].stage); wr.Float(float(m_shipDocking[i].stagePos)); wr.Vector3d(m_shipDocking[i].fromPos); wr.WrQuaternionf(m_shipDocking[i].fromRot); } wr.Bool(m_dockingLock); wr.Bool(m_bbCreated); wr.Double(m_lastUpdatedShipyard); wr.Int32(space->GetIndexForSystemBody(m_sbody)); wr.Int32(m_numPoliceDocked); m_navLights->Save(wr); }
void Sfx::Save(Serializer::Writer &wr) { wr.Vector3d(m_pos); wr.Vector3d(m_vel); wr.Float(m_age); wr.Int32(m_type); }
void Body::Serialize(Serializer::Writer &_wr, Space *space) { Serializer::Writer wr; wr.Int32(int(GetType())); switch (GetType()) { case Object::STAR: case Object::PLANET: case Object::SPACESTATION: case Object::SHIP: case Object::PLAYER: case Object::MISSILE: case Object::CARGOBODY: case Object::PROJECTILE: case Object::HYPERSPACECLOUD: Save(wr, space); break; default: assert(0); } wr.Vector3d(GetPosition()); matrix4x4d m; GetRotMatrix(m); for (int i=0; i<16; i++) wr.Double(m[i]); _wr.WrSection("Body", wr.GetData()); }
void Body::Save(Serializer::Writer &wr) { wr.Int32(Serializer::LookupFrame(m_frame)); wr.String(m_label); wr.Bool(m_onscreen); wr.Vector3d(m_projectedPos); wr.Bool(m_dead); wr.Bool(m_hasDoubleFrame); }
void HyperspaceCloud::Save(Serializer::Writer &wr, Space *space) { Body::Save(wr, space); wr.Vector3d(m_vel); wr.Double(m_birthdate); wr.Double(m_due); wr.Bool(m_isArrival); wr.Bool(m_ship != 0); if (m_ship) m_ship->Serialize(wr, space); }
void Body::Save(Serializer::Writer &wr, Space *space) { wr.Int32(space->GetIndexForFrame(m_frame)); wr.String(m_label); wr.Bool(m_dead); wr.Vector3d(m_pos); for (int i=0; i<9; i++) wr.Double(m_orient[i]); wr.Double(m_physRadius); wr.Double(m_clipRadius); }
void Ship::Save(Serializer::Writer &wr, Space *space) { DynamicBody::Save(wr, space); wr.Vector3d(m_angThrusters); wr.Vector3d(m_thrusters); wr.Int32(m_wheelTransition); wr.Float(m_wheelState); wr.Float(m_launchLockTimeout); wr.Bool(m_testLanded); wr.Int32(int(m_flightState)); wr.Int32(int(m_alertState)); wr.Double(m_lastFiringAlert); // XXX make sure all hyperspace attrs and the cloud get saved m_hyperspace.dest.Serialize(wr); wr.Float(m_hyperspace.countdown); for (int i=0; i<ShipType::GUNMOUNT_MAX; i++) { wr.Int32(m_gunState[i]); wr.Float(m_gunRecharge[i]); wr.Float(m_gunTemperature[i]); } wr.Float(m_ecmRecharge); m_shipFlavour.Save(wr); wr.Int32(m_dockedWithPort); wr.Int32(space->GetIndexForBody(m_dockedWith)); m_equipment.Save(wr); wr.Float(m_stats.hull_mass_left); wr.Float(m_stats.shield_mass_left); if(m_curAICmd) { wr.Int32(1); m_curAICmd->Save(wr); } else wr.Int32(0); wr.Int32(int(m_aiMessage)); wr.Double(m_thrusterFuel); wr.Double(m_reserveFuel); wr.Int32(static_cast<int>(m_controller->GetType())); m_controller->Save(wr, space); }
void Frame::Serialize(Serializer::Writer &wr, Frame *f, Space *space) { wr.Int32(f->m_flags); wr.Double(f->m_radius); wr.String(f->m_label); wr.Vector3d(f->m_pos); wr.Double(f->m_angSpeed); for (int i=0; i<9; i++) wr.Double(f->m_initialOrient[i]); wr.Int32(space->GetIndexForSystemBody(f->m_sbody)); wr.Int32(space->GetIndexForBody(f->m_astroBody)); wr.Int32(f->m_children.size()); for (Frame* kid : f->GetChildren()) Serialize(wr, kid, space); Sfx::Serialize(wr, f); }
void CollMesh::Save(Serializer::Writer &wr) const { wr.Vector3d(m_aabb.max); wr.Vector3d(m_aabb.min); wr.Double(m_aabb.radius); m_geomTree->Save(wr); wr.Int32(m_dynGeomTrees.size()); for (auto it : m_dynGeomTrees) { it->Save(wr); } wr.Int32(m_totalTris); }
void Frame::Serialize(Serializer::Writer &wr, Frame *f, Space *space) { wr.Int32(f->m_flags); wr.Double(f->m_radius); wr.String(f->m_label); wr.Vector3d(f->m_pos); for (int i=0; i<9; i++) wr.Double(f->m_orient[i]); wr.Double(f->m_angSpeed); wr.Int32(space->GetIndexForSystemBody(f->m_sbody)); wr.Int32(space->GetIndexForBody(f->m_astroBody)); wr.Int32(f->m_children.size()); for (ChildIterator it = f->BeginChildren(); it != f->EndChildren(); ++it) Serialize(wr, *it, space); Sfx::Serialize(wr, f); }
void SpaceStation::Save(Serializer::Writer &wr, Space *space) { ModelBody::Save(wr, space); MarketAgent::Save(wr); wr.Int32(Equip::TYPE_MAX); for (int i=0; i<Equip::TYPE_MAX; i++) { wr.Int32(int(m_equipmentStock[i])); } // save shipyard wr.Int32(m_shipsOnSale.size()); for (std::vector<ShipOnSale>::iterator i = m_shipsOnSale.begin(); i != m_shipsOnSale.end(); ++i) { wr.String((*i).id); wr.String((*i).regId); (*i).skin.Save(wr); } wr.Int32(m_shipDocking.size()); for (uint32_t i=0; i<m_shipDocking.size(); i++) { wr.Int32(space->GetIndexForBody(m_shipDocking[i].ship)); wr.Int32(m_shipDocking[i].stage); wr.Float(float(m_shipDocking[i].stagePos)); wr.Vector3d(m_shipDocking[i].fromPos); wr.WrQuaternionf(m_shipDocking[i].fromRot); } // store each of the bay groupings wr.Int32(mBayGroups.size()); for (uint32_t i=0; i<mBayGroups.size(); i++) { wr.Int32(mBayGroups[i].minShipSize); wr.Int32(mBayGroups[i].maxShipSize); wr.Bool(mBayGroups[i].inUse); wr.Int32(mBayGroups[i].bayIDs.size()); for (uint32_t j=0; j<mBayGroups[i].bayIDs.size(); j++) { wr.Int32(mBayGroups[i].bayIDs[j]); } } wr.Bool(m_bbCreated); wr.Double(m_lastUpdatedShipyard); wr.Int32(space->GetIndexForSystemBody(m_sbody)); wr.Int32(m_numPoliceDocked); wr.Double(m_doorAnimationStep); wr.Double(m_doorAnimationState); m_navLights->Save(wr); }
void AIParagonCmdGoTo::Save(Serializer::Writer &wr) { if (m_child) { delete m_child; m_child = 0; } AICommand::Save(wr); wr.Int32(Pi::game->GetSpace()->GetIndexForFrame(m_targetFrame)); wr.Vector3d(m_targetPosition); wr.Bool(m_toTransit); wr.Vector3d(m_targetOrient.VectorX()); wr.Vector3d(m_targetOrient.VectorY()); wr.Vector3d(m_targetOrient.VectorZ()); wr.Vector3d(m_startPO.pos); wr.Vector3d(m_startPO.xaxis); wr.Vector3d(m_startPO.yaxis); wr.Vector3d(m_startPO.zaxis); wr.Vector3d(m_endPO.pos); wr.Vector3d(m_endPO.xaxis); wr.Vector3d(m_endPO.yaxis); wr.Vector3d(m_endPO.zaxis); wr.Double(m_speedLimit); wr.Double(m_arrivalSpeed); wr.Int32(static_cast<int>(m_mode)); }
void Planet::Save(Serializer::Writer &wr) { Body::Save(wr); wr.Vector3d(pos); wr.Int32(Serializer::LookupSystemBody(sbody)); }
void TerrainBody::Save(Serializer::Writer &wr, Space *space) { Body::Save(wr, space); wr.Vector3d(m_pos); wr.Int32(space->GetIndexForSBody(m_sbody)); }