aboutsummaryrefslogtreecommitdiff
path: root/tools/ArtistTools/source/BlastPlugin/SampleBase/ui/GizmoToolController.h
diff options
context:
space:
mode:
authorAnton Novoselov <[email protected]>2017-08-01 12:53:38 +0300
committerAnton Novoselov <[email protected]>2017-08-01 12:53:38 +0300
commit236f03c0b9a4982328ed1201978f7f69d192d9b2 (patch)
treee486f2fa39dba203563895541e92c60ed3e25759 /tools/ArtistTools/source/BlastPlugin/SampleBase/ui/GizmoToolController.h
parentAdded screens to welcome page (diff)
downloadblast-236f03c0b9a4982328ed1201978f7f69d192d9b2.tar.xz
blast-236f03c0b9a4982328ed1201978f7f69d192d9b2.zip
Blast 1.1 release (windows / linux)
see docs/release_notes.txt for details
Diffstat (limited to 'tools/ArtistTools/source/BlastPlugin/SampleBase/ui/GizmoToolController.h')
-rw-r--r--tools/ArtistTools/source/BlastPlugin/SampleBase/ui/GizmoToolController.h65
1 files changed, 54 insertions, 11 deletions
diff --git a/tools/ArtistTools/source/BlastPlugin/SampleBase/ui/GizmoToolController.h b/tools/ArtistTools/source/BlastPlugin/SampleBase/ui/GizmoToolController.h
index 215cde5..8586ad3 100644
--- a/tools/ArtistTools/source/BlastPlugin/SampleBase/ui/GizmoToolController.h
+++ b/tools/ArtistTools/source/BlastPlugin/SampleBase/ui/GizmoToolController.h
@@ -1,12 +1,30 @@
-/*
-* Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved.
-*
-* NVIDIA CORPORATION and its licensors retain all intellectual property
-* and proprietary rights in and to this software, related documentation
-* and any modifications thereto. Any use, reproduction, disclosure or
-* distribution of this software and related documentation without an express
-* license agreement from NVIDIA CORPORATION is strictly prohibited.
-*/
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
+
#ifndef GIZMO_TOOL_CONTROLLER_H
#define GIZMO_TOOL_CONTROLLER_H
@@ -14,6 +32,7 @@
#include "SampleManager.h"
#include "DebugRenderBuffer.h"
#include "NvBlastExtPxManager.h"
+#include "BlastSceneTree.h"
class Renderable;
class RenderMaterial;
@@ -26,6 +45,11 @@ class ExtPhysicsActor;
}
}
+namespace physx
+{
+ class PxScene;
+}
+
enum AxisType
{
AT_X = 0,
@@ -41,7 +65,10 @@ enum GizmoToolMode
GTM_Rotation
};
-class GizmoToolController : public ISampleController
+void modifyPxActorByLocalWay(PxScene& pxScene, PxRigidDynamic& actor, PxTransform& gp_old, PxTransform& gp_new);
+void scalePxActor(PxScene& pxScene, PxRigidDynamic& actor, PxMat44& scale);
+
+class GizmoToolController : public ISampleController, public ISceneObserver
{
public:
GizmoToolController();
@@ -55,16 +82,26 @@ public:
virtual void onSampleStart();
virtual void onSampleStop();
+ virtual void dataSelected(std::vector<BlastNode*> selections);
+
void setGizmoToolMode(GizmoToolMode mode);
+ GizmoToolMode getGizmoToolMode() { return m_GizmoToolMode; }
void setAxisSelected(AxisType type);
+ void setAxisLength(float axisLength);
void showAxisRenderables(bool show);
void resetPos();
+ void setTargetActor(PxActor* actor);
+ PxActor* getTargetActor();
+ void syncRenderableState();
+ bool CanMapToRootChunk(PxActor* actor);
private:
GizmoToolController& operator= (GizmoToolController&);
//////// private methods ////////
+ physx::PxScene& GetPhysXScene();
+ void UpdateCircleRenderData(float axisLength);
bool CalPlaneLineIntersectPoint(PxVec3& result, PxVec3 planeNormal, PxVec3 planePoint, PxVec3 linedirection, PxVec3 linePoint);
float DistanceFromPointToLine(PxVec3& point, PxVec3& origin, PxVec3& direction, PxVec3& foot);
bool GetFootFromPointToPlane(PxVec3& point, PxVec3& origin, PxVec3& normal, PxVec3& foot);
@@ -72,6 +109,10 @@ private:
PxQuat CalDirectionQuat(AxisType type);
PxQuat CalConvertQuat();
void ScaleActor(bool replace);
+
+ bool CanModifyLocal(PxActor* actor);
+ void UpdateAssetInstanceTransform(const PxTransform& position);
+
//////// used controllers ////////
Renderer& getRenderer() const
@@ -103,7 +144,7 @@ private:
PxVec3 m_LastFoot;
PxVec3 m_LastAxis[AT_Num];
- PxRigidActor* m_CurrentActor;
+ PxRigidDynamic* m_CurrentActor;
bool m_bNeedResetPos;
bool m_bNeedResetColor;
@@ -119,6 +160,8 @@ private:
std::vector<PxDebugLine> m_CircleRenderData;
DebugRenderBuffer m_CircleRenderBuffer;
+
+ std::vector<BlastAssetInstanceNode*> m_assetInstances;
};
#endif // GIZMO_TOOL_CONTROLLER_H \ No newline at end of file