!B (Sandbox) (CE-21795) Importing models with multisubmaterials via fbx switches...
[CRYENGINE.git] / Code / CryEngine / CrySchematyc2 / Deprecated / VMOps.h
blob68858f3c4b8ac08ceb64949b1e15f3f19d2a5472
1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
3 #pragma once
5 #include <CrySchematyc2/GUID.h> // #SchematycTODO : Remove this include?
7 namespace Schematyc2
9 struct SVMOp
11 enum EOpCode
13 PUSH = 0, // Push value onto top of stack.
14 SET, // Set value at given position on stack.
15 COPY, // Copy value on stack.
16 POP, // Pop value from top of stack.
17 COLLAPSE, // Collapse stack to a specified size.
18 LOAD, // Load variable to top of stack.
19 STORE, // Store value at top of stack in variable.
20 CONTAINER_ADD, // Add value at top of stack in container.
21 CONTAINER_REMOVE_BY_INDEX, // Remove index at top of stack from container.
22 CONTAINER_REMOVE_BY_VALUE, // Remove value at top of stack from container.
23 CONTAINER_CLEAR, // Clear container.
24 CONTAINER_SIZE, // Copy size of container to top of stack.
25 CONTAINER_GET, // Copy element at given index from container to top of stack.
26 CONTAINER_SET, // Set value to container. Container index and value are at top of stack.
27 CONTAINER_FIND_BY_VALUE, // Find value's index in container by value at top of stack.
28 COMPARE, // Compare two values on stack.
29 INCREMENT_INT32, // Increment int32.
30 LESS_THAN_INT32, // Compare two int32s.
31 GREATER_THAN_INT32, // Compare two int32s.
32 BRANCH, // Branch to another location.
33 BRANCH_IF_ZERO, // Branch to another location if the value at the top of the stack is zero.
34 BRANCH_IF_NOT_ZERO, // Branch to another location if the value at the top of the stack is not zero.
35 GET_OBJECT, // Copy object id to stack.
36 START_TIMER, // Start a timer.
37 STOP_TIMER, // Stop a timer.
38 RESET_TIMER, // Reset a timer.
39 SEND_SIGNAL, // Send a signal.
40 BROADCAST_SIGNAL, // Broadcast a signal.
41 CALL_GLOBAL_FUNCTION, // Call a global function.
42 CALL_ENV_ABSTRACT_INTERFACE_FUNCTION, // Call an environment abstract interface function.
43 CALL_LIB_ABSTRACT_INTERFACE_FUNCTION, // Call a library abstract interface function.
44 CALL_COMPONENT_MEMBER_FUNCTION, // Call a component function.
45 CALL_ACTION_MEMBER_FUNCTION, // Call a action function.
46 CALL_LIB_FUNCTION, // Call a library function.
47 RETURN // Exit the current function.
50 inline SVMOp(SVMOp::EOpCode _opCode, size_t _size)
51 : opCode(_opCode)
52 , size(_size)
55 SVMOp::EOpCode opCode;
56 size_t size;
59 struct SVMPushOp : public SVMOp
61 inline SVMPushOp(size_t _iConstValue)
62 : SVMOp(SVMOp::PUSH, sizeof(*this))
63 , iConstValue(_iConstValue)
66 size_t iConstValue;
69 struct SVMSetOp : public SVMOp
71 inline SVMSetOp(size_t _pos, size_t _iConstValue)
72 : SVMOp(SVMOp::SET, sizeof(*this))
73 , pos(_pos)
74 , iConstValue(_iConstValue)
77 size_t pos;
78 size_t iConstValue;
81 struct SVMCopyOp : public SVMOp
83 inline SVMCopyOp(size_t _srcPos, size_t _dstPos)
84 : SVMOp(SVMOp::COPY, sizeof(*this))
85 , srcPos(_srcPos)
86 , dstPos(_dstPos)
89 size_t srcPos;
90 size_t dstPos;
93 struct SVMPopOp : public SVMOp
95 inline SVMPopOp(size_t _count)
96 : SVMOp(SVMOp::POP, sizeof(*this))
97 , count(_count)
100 size_t count;
103 struct SVMCollapseOp : public SVMOp
105 inline SVMCollapseOp(size_t _pos)
106 : SVMOp(SVMOp::COLLAPSE, sizeof(*this))
107 , pos(_pos)
110 size_t pos;
113 struct SVMLoadOp : public SVMOp
115 inline SVMLoadOp(size_t _pos, size_t _count)
116 : SVMOp(SVMOp::LOAD, sizeof(*this))
117 , pos(_pos)
118 , count(_count)
121 size_t pos;
122 size_t count;
125 struct SVMStoreOp : public SVMOp
127 inline SVMStoreOp(size_t _pos, size_t _count)
128 : SVMOp(SVMOp::STORE, sizeof(*this))
129 , pos(_pos)
130 , count(_count)
133 size_t pos;
134 size_t count;
137 struct SVMContainerAddOp : public SVMOp
139 inline SVMContainerAddOp(size_t _iContainer, size_t _count)
140 : SVMOp(SVMOp::CONTAINER_ADD, sizeof(*this))
141 , iContainer(_iContainer)
142 , count(_count)
145 size_t iContainer;
146 size_t count;
149 struct SVMContainerRemoveByIndexOp : public SVMOp
151 inline SVMContainerRemoveByIndexOp(size_t _iContainer, size_t _count)
152 : SVMOp(SVMOp::CONTAINER_REMOVE_BY_INDEX, sizeof(*this))
153 , iContainer(_iContainer)
154 , count(_count)
157 size_t iContainer;
158 size_t count;
161 struct SVMContainerRemoveByValueOp : public SVMOp
163 inline SVMContainerRemoveByValueOp(size_t _iContainer, size_t _count)
164 : SVMOp(SVMOp::CONTAINER_REMOVE_BY_VALUE, sizeof(*this))
165 , iContainer(_iContainer)
166 , count(_count)
169 size_t iContainer;
170 size_t count;
173 struct SVMContainerClearOp : public SVMOp
175 inline SVMContainerClearOp(size_t _iContainer)
176 : SVMOp(SVMOp::CONTAINER_CLEAR, sizeof(*this))
177 , iContainer(_iContainer)
180 size_t iContainer;
183 struct SVMContainerSizeOp : public SVMOp
185 inline SVMContainerSizeOp(size_t _iContainer, size_t _divisor)
186 : SVMOp(SVMOp::CONTAINER_SIZE, sizeof(*this))
187 , iContainer(_iContainer)
188 , divisor(_divisor)
191 size_t iContainer;
192 size_t divisor;
195 struct SVMContainerGetOp : public SVMOp
197 inline SVMContainerGetOp(size_t _iContainer, size_t _count)
198 : SVMOp(SVMOp::CONTAINER_GET, sizeof(*this))
199 , iContainer(_iContainer)
200 , count(_count)
203 size_t iContainer;
204 size_t count;
207 struct SVMContainerSetOp : public SVMOp
209 inline SVMContainerSetOp(size_t _iContainer, size_t _count)
210 : SVMOp(SVMOp::CONTAINER_SET, sizeof(*this))
211 , iContainer(_iContainer)
212 , count(_count)
215 size_t iContainer;
216 size_t count;
219 struct SVMContainerFindByValueOp : public SVMOp
221 inline SVMContainerFindByValueOp(size_t _iContainer, size_t _count)
222 : SVMOp(SVMOp::CONTAINER_FIND_BY_VALUE, sizeof(*this))
223 , iContainer(_iContainer)
224 , count(_count)
227 size_t iContainer;
228 size_t count;
231 struct SVMCompareOp : public SVMOp
233 inline SVMCompareOp(size_t _lhsPos, size_t _rhsPos, size_t _count)
234 : SVMOp(SVMOp::COMPARE, sizeof(*this))
235 , lhsPos(_lhsPos)
236 , rhsPos(_rhsPos)
237 , count(_count)
240 size_t lhsPos;
241 size_t rhsPos;
242 size_t count;
245 struct SVMIncrementInt32Op : public SVMOp
247 inline SVMIncrementInt32Op(size_t _pos)
248 : SVMOp(SVMOp::INCREMENT_INT32, sizeof(*this))
249 , pos(_pos)
252 size_t pos;
255 struct SVMLessThanInt32Op : public SVMOp
257 inline SVMLessThanInt32Op(size_t _lhsPos, size_t _rhsPos)
258 : SVMOp(SVMOp::LESS_THAN_INT32, sizeof(*this))
259 , lhsPos(_lhsPos)
260 , rhsPos(_rhsPos)
263 size_t lhsPos;
264 size_t rhsPos;
267 struct SVMGreaterThanInt32Op : public SVMOp
269 inline SVMGreaterThanInt32Op(size_t _lhsPos, size_t _rhsPos)
270 : SVMOp(SVMOp::GREATER_THAN_INT32, sizeof(*this))
271 , lhsPos(_lhsPos)
272 , rhsPos(_rhsPos)
275 size_t lhsPos;
276 size_t rhsPos;
279 struct SVMBranchOp : public SVMOp
281 inline SVMBranchOp(size_t _pos)
282 : SVMOp(SVMOp::BRANCH, sizeof(*this))
283 , pos(_pos)
286 size_t pos;
289 struct SVMBranchIfZeroOp : public SVMOp
291 inline SVMBranchIfZeroOp(size_t _pos)
292 : SVMOp(SVMOp::BRANCH_IF_ZERO, sizeof(*this))
293 , pos(_pos)
296 size_t pos;
299 struct SVMBranchIfNotZeroOp : public SVMOp
301 inline SVMBranchIfNotZeroOp(size_t _pos)
302 : SVMOp(SVMOp::BRANCH_IF_NOT_ZERO, sizeof(*this))
303 , pos(_pos)
306 size_t pos;
309 struct SVMGetObjectOp : public SVMOp
311 inline SVMGetObjectOp()
312 : SVMOp(SVMOp::GET_OBJECT, sizeof(*this))
316 struct SVMSendSignalOp : public SVMOp
318 inline SVMSendSignalOp(const SGUID& _guid)
319 : SVMOp(SVMOp::SEND_SIGNAL, sizeof(*this))
320 , guid(_guid)
323 SGUID guid;
326 struct SVMBroadcastSignalOp : public SVMOp
328 inline SVMBroadcastSignalOp(const SGUID& _guid)
329 : SVMOp(SVMOp::BROADCAST_SIGNAL, sizeof(*this))
330 , guid(_guid)
333 SGUID guid;
336 struct SVMCallGlobalFunctionOp : public SVMOp
338 inline SVMCallGlobalFunctionOp(const uint32 _iGlobalFunction)
339 : SVMOp(SVMOp::CALL_GLOBAL_FUNCTION, sizeof(*this))
340 , iGlobalFunction(_iGlobalFunction)
343 uint32 iGlobalFunction;
346 struct SVMCallEnvAbstractInterfaceFunctionOp : public SVMOp
348 inline SVMCallEnvAbstractInterfaceFunctionOp(const SGUID& _abstractInterfaceGUID, const SGUID& _functionGUID)
349 : SVMOp(SVMOp::CALL_ENV_ABSTRACT_INTERFACE_FUNCTION, sizeof(*this))
350 , abstractInterfaceGUID(_abstractInterfaceGUID)
351 , functionGUID(_functionGUID)
354 const SGUID abstractInterfaceGUID;
355 const SGUID functionGUID;
358 struct SVMCallLibAbstractInterfaceFunctionOp : public SVMOp
360 inline SVMCallLibAbstractInterfaceFunctionOp(const SGUID& _abstractInterfaceGUID, const SGUID& _functionGUID)
361 : SVMOp(SVMOp::CALL_LIB_ABSTRACT_INTERFACE_FUNCTION, sizeof(*this))
362 , abstractInterfaceGUID(_abstractInterfaceGUID)
363 , functionGUID(_functionGUID)
366 const SGUID abstractInterfaceGUID;
367 const SGUID functionGUID;
370 struct SVMCallComponentMemberFunctionOp : public SVMOp
372 inline SVMCallComponentMemberFunctionOp(const uint32 _iComponentMemberFunction)
373 : SVMOp(SVMOp::CALL_COMPONENT_MEMBER_FUNCTION, sizeof(*this))
374 , iComponentMemberFunction(_iComponentMemberFunction)
377 uint32 iComponentMemberFunction;
380 struct SVMCallActionMemberFunctionOp : public SVMOp
382 inline SVMCallActionMemberFunctionOp(const uint32 _iActionMemberFunction)
383 : SVMOp(SVMOp::CALL_ACTION_MEMBER_FUNCTION, sizeof(*this))
384 , iActionMemberFunction(_iActionMemberFunction)
387 uint32 iActionMemberFunction;
390 struct SVMCallLibFunctionOp : public SVMOp
392 inline SVMCallLibFunctionOp(const LibFunctionId& _functionId)
393 : SVMOp(SVMOp::CALL_LIB_FUNCTION, sizeof(*this))
394 , functionId(_functionId)
397 LibFunctionId functionId;
400 struct SVMStartTimerOp : public SVMOp
402 inline SVMStartTimerOp(const SGUID& _guid)
403 : SVMOp(SVMOp::START_TIMER, sizeof(*this))
404 , guid(_guid)
407 SGUID guid;
410 struct SVMStopTimerOp : public SVMOp
412 inline SVMStopTimerOp(const SGUID& _guid)
413 : SVMOp(SVMOp::STOP_TIMER, sizeof(*this))
414 , guid(_guid)
417 SGUID guid;
420 struct SVMResetTimerOp : public SVMOp
422 inline SVMResetTimerOp(const SGUID& _guid)
423 : SVMOp(SVMOp::RESET_TIMER, sizeof(*this))
424 , guid(_guid)
427 SGUID guid;
430 struct SVMReturnOp : public SVMOp
432 inline SVMReturnOp()
433 : SVMOp(SVMOp::RETURN, sizeof(*this))