Utilities/Prefab Manager¶
Summary¶
namespace
ovidVR::Utilities
namespace
ovidVR::Utilities::prefabSpawnManager
namespace
ovidVR::Utilities::prefabSpawnNotifier
class
HologramPrefabBehavior
class
PathAnimation
class
PrefabLerpPlacement
When an interactable gameObject needs to be placed somewhere with a correct angle, it is difficult to measure if it’s correctly placed because we do not have something to compare it to. A solution is to have the same gameObject duplicated and have this script attached to it.
class
ovidVR::Utilities::prefabSpawnManager::PrefabSpawnManager::PrefabSpawnValues
class
QuestionTriggerCollider
class
ToolTriggerCollider
This script is attached to every child of the prefab that contains the ToolColliderPrefabConstructor Everytime each child is triggered it calls the parent when it’s done via this script
namespace ovidVR::Utilities
¶
Summary¶
class
ovidVR::Utilities::OnDestoyCallBackForFakePrefabs
class
ovidVR::Utilities::PrefabImporter
Prefab Importer is a helper class that loads and instantiates prefabs
class ovidVR::Utilities::OnDestoyCallBackForFakePrefabs
¶
class ovidVR::Utilities::OnDestoyCallBackForFakePrefabs
: public MonoBehaviour
class ovidVR::Utilities::PrefabImporter
¶
class ovidVR::Utilities::PrefabImporter
: public MonoBehaviour
Prefab Importer is a helper class that loads and instantiates prefabs
namespace ovidVR::Utilities::prefabSpawnManager
¶
Summary¶
class
ovidVR::Utilities::prefabSpawnManager::PrefabSpawnManager
Many gameobjects have physics properties (e.g. gravity). So there can be cases when the physics engine bugs and the object disappears or a user making a mistake, and have the object being thrown to an unreachable spot.
class ovidVR::Utilities::prefabSpawnManager::PrefabSpawnManager
¶
class ovidVR::Utilities::prefabSpawnManager::PrefabSpawnManager
: public MonoBehaviour
Many gameobjects have physics properties (e.g. gravity). So there can be cases when the physics engine bugs and the object disappears or a user making a mistake, and have the object being thrown to an unreachable spot.
This script purpose is to store each interactable -with physics properties- gameobject and observe its behavior. It constantly observes each gameObject per some seconds and resets it under specific conditions such as: i. not beng attached by anything (using the OvidVRInteractableItem script) ii. being away from it’s starting position by a given offset. This offset can be set from the gameObject itself if it has attached the script InteractablePrefabCostructor OR InteractableWithParentPrefabConstructor.
PrefabSpawnManager is also responsible for preloading all prefabs on start of the Application
NOTICE Every function of this class can be used for debug purposes. However since evey function is called internally they SHOULD NOT be called from the developers.
This sigleton contains a unity function Update()
class ovidVR::Utilities::prefabSpawnManager::PrefabSpawnManager::PrefabSpawnValues
¶
Summary¶
public GameObject
spawnedPrefab
public InteractablePrefabConstructor
spawnedPrefabConstructor
public Coroutine
spawnedPrefabCoroutine
public inline
PrefabSpawnValues
(GameObject _gameObject)
Members¶
public GameObject
spawnedPrefab
¶
public InteractablePrefabConstructor
spawnedPrefabConstructor
¶
public Coroutine
spawnedPrefabCoroutine
¶
public inline
PrefabSpawnValues
(GameObject _gameObject)
¶
namespace ovidVR::Utilities::prefabSpawnNotifier
¶
Summary¶
class
ovidVR::Utilities::prefabSpawnNotifier::PrefabSpawnNotifier
Script is responsible for flashing the gameobject it’s attached to. Helpful for the user to notice specific gameobject. When attached to one, the gameobject will automatically start flashing. If it contains colliders, then when the users hand (ONLY if it’s tagged “RightPalm” and/or “LeftPalm”) is hovering above the gameObject it will flash faster with another to notify the user that it is in a grabbable range (if selected).
class ovidVR::Utilities::prefabSpawnNotifier::PrefabSpawnNotifier
¶
class ovidVR::Utilities::prefabSpawnNotifier::PrefabSpawnNotifier
: public MonoBehaviour
Script is responsible for flashing the gameobject it’s attached to. Helpful for the user to notice specific gameobject. When attached to one, the gameobject will automatically start flashing. If it contains colliders, then when the users hand (ONLY if it’s tagged “RightPalm” and/or “LeftPalm”) is hovering above the gameObject it will flash faster with another to notify the user that it is in a grabbable range (if selected).
When grabbed from the user, OR the StopNotification Function is called, the gameObject stops flashing and the script gets destoryed.
The public values are only viable to change for the Inital Setup, before the script rins (e.g. setup on Editor).
NOTICE It may NOT work for all types of shaders.
Summary¶
public Color
mainFlashColor
public bool
allowDifferentColorOnHover
public Color
hoverColor
public float
mainFlashSpeedMul
public float
hoverFlashSpeedMul
public inline void
StopNotification
()
resets the material of the gameObject, stops the flashing and the script is auto-destoryed
Members¶
public Color
mainFlashColor
¶
public bool
allowDifferentColorOnHover
¶
public Color
hoverColor
¶
public float
mainFlashSpeedMul
¶
public float
hoverFlashSpeedMul
¶
public inline void
StopNotification
()
¶
resets the material of the gameObject, stops the flashing and the script is auto-destoryed
class HologramPrefabBehavior
¶
class HologramPrefabBehavior
: public MonoBehaviour
class PathAnimation
¶
class PathAnimation
: public MonoBehaviour
Summary¶
public bool
conditionsAreMet
public inline void
SetUpPathAnimation
(string animName,GameObject startTransform,GameObject endTransform,float targetProgress,int animationLayer,bool reverseAnimation,bool lateStart)
public inline void
Initialize
()
public inline void
FinalizeScript
()
public inline float
GetAnimationValue
()
public inline void
ManualStartAnimation
()
public inline void
RecalculateTotalDistance
()
Members¶
public bool
conditionsAreMet
¶
public inline void
SetUpPathAnimation
(string animName,GameObject startTransform,GameObject endTransform,float targetProgress,int animationLayer,bool reverseAnimation,bool lateStart)
¶
public inline void
Initialize
()
¶
public inline void
FinalizeScript
()
¶
public inline float
GetAnimationValue
()
¶
public inline void
ManualStartAnimation
()
¶
public inline void
RecalculateTotalDistance
()
¶
class PrefabLerpPlacement
¶
class PrefabLerpPlacement
: public MonoBehaviour
When an interactable gameObject needs to be placed somewhere with a correct angle, it is difficult to measure if it’s correctly placed because we do not have something to compare it to. A solution is to have the same gameObject duplicated and have this script attached to it.
The gameObject with this script must be placed to its final -placed- position. When started, the renderers for this gameObject will be disabled. When the other gameObject (the similar one!) collides with this gameObect, it observes their angle difference. When this difference is below the offset given from the developer, this scirpt detaches the gameObect from anywhere that it is attached using the script ‘OvidVRInteractableItem’ and adjust its to position and rotation to match the ones of this -final-gameObject. After the Lerping time (or adjustment time) is finished, the other gameObject gets destroyed, this gameObject’s renderers are enabled and every other behavior provided to this gameObject is executed (e.g. an animation). In the end the script auto disables itself.
REQUIREMENTS:* Both must have rigidbodies and colliders
The other gameobject must contain in it’s parent the OvidVRInteractableItem or OvidVRInteractableRotator script.
If this gameObject has an animation, it must be an Animation Component NOT an Animator and the animation iself must be Legacy Supported (see debug option)
Summary¶
public float
maxAngleDegreeDiff
public float
acceptedAngle
public List< GameObject >
InteractablePrefabs
public inline void
FinalizePrefabAction
()
If the action was skipped and the prefab that has attached this script isn’t in the state where it should be if the user whould do the whole action correctly, call this function on the action’s Perform function to turn this prefab into it’s final state
public inline void
FinalizePrefabActionByNetWork
()
When server or client finishes the action, the prefab goes to its final state ONLY when the game is in online mode!
Members¶
public float
maxAngleDegreeDiff
¶
public float
acceptedAngle
¶
public List< GameObject >
InteractablePrefabs
¶
public inline void
FinalizePrefabAction
()
¶
If the action was skipped and the prefab that has attached this script isn’t in the state where it should be if the user whould do the whole action correctly, call this function on the action’s Perform function to turn this prefab into it’s final state
public inline void
FinalizePrefabActionByNetWork
()
¶
When server or client finishes the action, the prefab goes to its final state ONLY when the game is in online mode!
NOTICE This function should not be called manually. it’s internal function (between dlls)
class QuestionTriggerCollider
¶
class QuestionTriggerCollider
: public MonoBehaviour
Summary¶
public bool
m_IsCorrect
public inline void
ActionCall
()
public inline void
SetOnFinishSend
(Action a)
Internally used function Set the callback when the collider is finished
Members¶
public bool
m_IsCorrect
¶
public inline void
ActionCall
()
¶
public inline void
SetOnFinishSend
(Action a)
¶
Internally used function Set the callback when the collider is finished
Parameters¶
a
class ToolTriggerCollider
¶
class ToolTriggerCollider
: public MonoBehaviour
This script is attached to every child of the prefab that contains the ToolColliderPrefabConstructor Everytime each child is triggered it calls the parent when it’s done via this script
If the parent has the ToolColliderPrefabConstructor script it automatically attaches this script to every 1st depth child
REQUIREMENTS: each child must have a trigger collider
Summary¶
public inline void
SetUsedTool
(List< ToolAndTime > _usedTools)
Provide at runtime a new tool that can complete this action and the time it will need to trigger every collider
public inline void
SetOnFinishSend
(Action a)
Internally used function Set the callback when the collider is finished
Members¶
public inline void
SetUsedTool
(List< ToolAndTime > _usedTools)
¶
Provide at runtime a new tool that can complete this action and the time it will need to trigger every collider
Parameters¶
_usedTools
List of class that contains the tool and a float for the collider’s trigger timer
public inline void
SetOnFinishSend
(Action a)
¶
Internally used function Set the callback when the collider is finished
Parameters¶
a