33 : world(owner), vobType(vob.type), vobObjectID(vob.id), parent(parent) {
34 pos = Tempest::Matrix4x4(vob.rotation.columns[0].x, vob.rotation.columns[1].x, vob.rotation.columns[2].x, vob.position.x,
35 vob.rotation.columns[0].y, vob.rotation.columns[1].y, vob.rotation.columns[2].y, vob.position.y,
36 vob.rotation.columns[0].z, vob.rotation.columns[1].z, vob.rotation.columns[2].z, vob.position.z,
47 for(
auto& i:vob.children) {
50 child.emplace_back(std::move(p));
129 case zenkit::VirtualObjectType::UNKNOWN:
131 case zenkit::VirtualObjectType::zCVob:
132 case zenkit::VirtualObjectType::zCVobStair:
133 return std::unique_ptr<Vob>(
new StaticObj(parent,
world,vob,flags));
134 case zenkit::VirtualObjectType::zCVobAnimate:
136 return std::unique_ptr<Vob>(
new StaticObj(parent,
world,vob,flags));
137 case zenkit::VirtualObjectType::zCVobLevelCompo:
138 return std::unique_ptr<Vob>(
new Vob(parent,
world,vob,flags));
139 case zenkit::VirtualObjectType::oCMobFire:
140 return std::unique_ptr<Vob>(
new FirePlace(parent,
world,
reinterpret_cast<const zenkit::VFire&
>(vob),flags));
141 case zenkit::VirtualObjectType::oCMOB:
144 return std::unique_ptr<Vob>(
new Interactive(parent,
world,
reinterpret_cast<const zenkit::VMovableObject&
>(vob),flags));
145 case zenkit::VirtualObjectType::oCMobInter:
146 case zenkit::VirtualObjectType::oCMobBed:
147 case zenkit::VirtualObjectType::oCMobDoor:
148 case zenkit::VirtualObjectType::oCMobContainer:
149 case zenkit::VirtualObjectType::oCMobSwitch:
150 case zenkit::VirtualObjectType::oCMobLadder:
151 case zenkit::VirtualObjectType::oCMobWheel:
152 return std::unique_ptr<Vob>(
new Interactive(parent,
world,
reinterpret_cast<const zenkit::VMovableObject&
>(vob),flags));
154 case zenkit::VirtualObjectType::zCMover:
155 return std::unique_ptr<Vob>(
new MoveTrigger(parent,
world,
reinterpret_cast<const zenkit::VMover&
>(vob),flags));
156 case zenkit::VirtualObjectType::zCCodeMaster:
157 return std::unique_ptr<Vob>(
new CodeMaster(parent,
world,
reinterpret_cast<const zenkit::VCodeMaster&
>(vob),flags));
158 case zenkit::VirtualObjectType::zCTriggerList:
159 return std::unique_ptr<Vob>(
new TriggerList(parent,
world,
reinterpret_cast<const zenkit::VTriggerList&
>(vob),flags));
160 case zenkit::VirtualObjectType::oCTriggerScript:
161 return std::unique_ptr<Vob>(
new TriggerScript(parent,
world,
reinterpret_cast<const zenkit::VTriggerScript&
>(vob),flags));
162 case zenkit::VirtualObjectType::zCTriggerWorldStart:
163 return std::unique_ptr<Vob>(
new TriggerWorldStart(parent,
world,
reinterpret_cast<const zenkit::VTriggerWorldStart&
>(vob),flags));
164 case zenkit::VirtualObjectType::oCTriggerChangeLevel:
165 return std::unique_ptr<Vob>(
new ZoneTrigger(parent,
world,
reinterpret_cast<const zenkit::VTriggerChangeLevel&
>(vob),flags));
166 case zenkit::VirtualObjectType::zCTrigger:
167 return std::unique_ptr<Vob>(
new Trigger(parent,
world,vob,flags));
168 case zenkit::VirtualObjectType::zCMessageFilter:
169 return std::unique_ptr<Vob>(
new MessageFilter(parent,
world,
reinterpret_cast<const zenkit::VMessageFilter&
>(vob),flags));
170 case zenkit::VirtualObjectType::zCPFXController:
171 return std::unique_ptr<Vob>(
new PfxController(parent,
world,
reinterpret_cast<const zenkit::VParticleEffectController&
>(vob),flags));
172 case zenkit::VirtualObjectType::oCTouchDamage:
173 return std::unique_ptr<Vob>(
new TouchDamage(parent,
world,
reinterpret_cast<const zenkit::VTouchDamage&
>(vob),flags));
174 case zenkit::VirtualObjectType::zCTriggerUntouch:
175 return std::unique_ptr<Vob>(
new Vob(parent,
world,vob,flags));
176 case zenkit::VirtualObjectType::zCMoverController:
177 return std::unique_ptr<Vob>(
new MoverControler(parent,
world,
reinterpret_cast<const zenkit::VMoverController&
>(vob),flags));
178 case zenkit::VirtualObjectType::zCEarthquake:
179 return std::unique_ptr<Vob>(
new Earthquake(parent,
world,
reinterpret_cast<const zenkit::VEarthquake&
>(vob),flags));
180 case zenkit::VirtualObjectType::zCVobStartpoint: {
181 float dx = vob.rotation[2].x;
182 float dy = vob.rotation[2].y;
183 float dz = vob.rotation[2].z;
184 world.
addStartPoint(Vec3(vob.position.x,vob.position.y,vob.position.z),Vec3(dx,dy,dz),vob.vob_name);
186 return std::unique_ptr<Vob>(
new Vob(parent,
world,vob,flags));
188 case zenkit::VirtualObjectType::zCVobSpot: {
189 float dx = vob.rotation[2].x;
190 float dy = vob.rotation[2].y;
191 float dz = vob.rotation[2].z;
192 world.
addFreePoint(Vec3(vob.position.x,vob.position.y,vob.position.z),Vec3(dx,dy,dz),vob.vob_name);
194 return std::unique_ptr<Vob>(
new Vob(parent,
world,vob,flags));
196 case zenkit::VirtualObjectType::oCItem: {
198 world.
addItem(
reinterpret_cast<const zenkit::VItem&
>(vob));
200 return std::unique_ptr<Vob>(
new Vob(parent,
world,vob,flags));
203 case zenkit::VirtualObjectType::zCVobSound:
204 case zenkit::VirtualObjectType::zCVobSoundDaytime:
205 case zenkit::VirtualObjectType::oCZoneMusic:
206 case zenkit::VirtualObjectType::oCZoneMusicDefault: {
209 return std::unique_ptr<Vob>(
new Vob(parent,
world,vob,flags));
211 case zenkit::VirtualObjectType::zCVobLight: {
212 return std::unique_ptr<Vob>(
new WorldLight(parent,
world,
reinterpret_cast<const zenkit::VLight&
>(vob),flags));
214 case zenkit::VirtualObjectType::zCCSCamera:
215 return std::unique_ptr<Vob>(
new CsCamera(parent,
world,
reinterpret_cast<const zenkit::VCutsceneCamera&
>(vob),flags));
216 case zenkit::VirtualObjectType::zCCamTrj_KeyFrame:
218 case zenkit::VirtualObjectType::zCZoneZFog:
219 case zenkit::VirtualObjectType::zCZoneZFogDefault:
221 case zenkit::VirtualObjectType::zCZoneVobFarPlane:
222 case zenkit::VirtualObjectType::zCZoneVobFarPlaneDefault:
225 case zenkit::VirtualObjectType::zCVobLensFlare:
226 case zenkit::VirtualObjectType::zCVobScreenFX:
228 case zenkit::VirtualObjectType::oCNpc:
229 case zenkit::VirtualObjectType::oCCSTrigger:
233 return std::unique_ptr<Vob>(
new Vob(parent,
world,vob,flags));