Commit 63478ea7 authored by xujr's avatar xujr

切割脚本更新,手指滑动效果添加,刀光效果添加

parent 2bfbfe6a
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4134188818587797083
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6048546582934683809}
- component: {fileID: 6949272869855022304}
- component: {fileID: 6178869135123711443}
- component: {fileID: 1759051218065412882}
m_Layer: 0
m_Name: Blade_Target
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6048546582934683809
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4134188818587797083}
m_LocalRotation: {x: -0.03248637, y: 0.70636016, z: -0.03248637, w: 0.70636016}
m_LocalPosition: {x: 0, y: 3.355, z: -0.044999998}
m_LocalScale: {x: 0.612316, y: 3.7518044, z: 0.5}
m_Children: []
m_Father: {fileID: 8438712675398421946}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 90.00001, z: -5.2660003}
--- !u!33 &6949272869855022304
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4134188818587797083}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &6178869135123711443
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4134188818587797083}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 4294967295
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 402662c2286fe094c8da1d9509a0a8e8, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!114 &1759051218065412882
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4134188818587797083}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4e0237b6754cb64cb199d30b56023c5, type: 3}
m_Name:
m_EditorClassIdentifier:
actionType: 0
onTrigger: 1
sliceType: 0
target: {fileID: 0}
targets: []
transForm: {fileID: 0}
enterPlane: []
exitPlane: []
colLider: {fileID: 0}
mask: -1
tagFilter: Untagged
--- !u!1 &6149456649795108429
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7616385549566916860}
- component: {fileID: 4427968761241079509}
m_Layer: 0
m_Name: Trail
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7616385549566916860
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6149456649795108429}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 5.065, z: -0.34}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 8438712675398421946}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4427968761241079509
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6149456649795108429}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5ceb339997c8304e9354d4ce5ddc9da, type: 3}
m_Name:
m_EditorClassIdentifier:
_emit: 1
_emitTime: 0
_material: {fileID: 2100000, guid: 5f402d1520e5fa74fa21e08f85b71370, type: 2}
_lifeTime: 0.5
_colors:
- {r: 1, g: 0, b: 0, a: 1}
_sizes: []
_minVertexDistance: 0.1
_maxVertexDistance: 10
_maxAngle: 3
_autoDestruct: 0
subdivisions: 5
_base: {fileID: 8438712675754401919}
_tip: {fileID: 7616385549566916860}
--- !u!1 &7268475883760380263
GameObject:
m_ObjectHideFlags: 0
......@@ -26,8 +186,8 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7268475883760380263}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0.16572736, z: 0.009539383}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalPosition: {x: 0, y: 0.8286368, z: 0.04769692}
m_LocalScale: {x: 5, y: 5, z: 5}
m_Children: []
m_Father: {fileID: 8438712675398421946}
m_RootOrder: 0
......@@ -107,6 +267,8 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 5946310162658696052}
- {fileID: 6048546582934683809}
- {fileID: 7616385549566916860}
m_Father: {fileID: 8438712675754401919}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
......@@ -119,6 +281,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 8438712675754401919}
- component: {fileID: 1327538211}
m_Layer: 0
m_Name: Props4
m_TagString: Untagged
......@@ -133,11 +296,30 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8438712675754401916}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 5, y: 5, z: 5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 8438712675398421946}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &1327538211
Animator:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8438712675754401916}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 770fb26f08fbbae459033ae04e608a9d, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3379856167765465296
--- !u!1 &1181836203609492438
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
......@@ -8,61 +8,102 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 855241462438040334}
- component: {fileID: 8847864637312453932}
- component: {fileID: 5281009097539420525}
- component: {fileID: 8973122836779157598}
- component: {fileID: 3553420177977089695}
m_Layer: 0
m_Name: Props4Parent
m_Name: Blade_Target
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &855241462438040334
--- !u!4 &8847864637312453932
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3379856167765465296}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 8010258264794284698}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8010258264613433182
GameObject:
m_GameObject: {fileID: 1181836203609492438}
m_LocalRotation: {x: -0.03248637, y: 0.70636016, z: -0.03248637, w: 0.70636016}
m_LocalPosition: {x: 0, y: 3.355, z: -0.044999998}
m_LocalScale: {x: 0.612316, y: 3.7518044, z: 0.5}
m_Children: []
m_Father: {fileID: 6639848910996357175}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 90.00001, z: -5.2660003}
--- !u!33 &5281009097539420525
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8010258264613433183}
m_Layer: 0
m_Name: Props4
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8010258264613433183
Transform:
m_GameObject: {fileID: 1181836203609492438}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &8973122836779157598
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8010258264613433182}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 5238806299995486609}
m_Father: {fileID: 8010258264794284698}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8010258264794284697
m_GameObject: {fileID: 1181836203609492438}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 4294967295
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 402662c2286fe094c8da1d9509a0a8e8, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!114 &3553420177977089695
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1181836203609492438}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4e0237b6754cb64cb199d30b56023c5, type: 3}
m_Name:
m_EditorClassIdentifier:
actionType: 0
onTrigger: 1
sliceType: 0
target: {fileID: 0}
targets: []
transForm: {fileID: 0}
enterPlane: []
exitPlane: []
colLider: {fileID: 0}
mask: -1
tagFilter: Untagged
--- !u!1 &3379856167765465296
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
......@@ -70,30 +111,30 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8010258264794284698}
- component: {fileID: 855241462438040334}
m_Layer: 0
m_Name: Props4
m_Name: Props4Parent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8010258264794284698
--- !u!4 &855241462438040334
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8010258264794284697}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_GameObject: {fileID: 3379856167765465296}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 5, y: 5, z: 5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 8010258264613433183}
m_Father: {fileID: 855241462438040334}
- {fileID: 6639848910144351730}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &9144738582166621058
--- !u!1 &5613736239774672106
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
......@@ -101,9 +142,9 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5238806299995486609}
- component: {fileID: 3884631952443048871}
- component: {fileID: 7409676232927477598}
- component: {fileID: 8916184460720297721}
- component: {fileID: 497542454746574031}
- component: {fileID: 6186583948359077942}
m_Layer: 0
m_Name: Knife
m_TagString: Untagged
......@@ -111,35 +152,35 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5238806299995486609
--- !u!4 &8916184460720297721
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9144738582166621058}
m_GameObject: {fileID: 5613736239774672106}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0.16572736, z: 0.009539383}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalPosition: {x: 0, y: 0.8286368, z: 0.04769692}
m_LocalScale: {x: 5, y: 5, z: 5}
m_Children: []
m_Father: {fileID: 8010258264613433183}
m_Father: {fileID: 6639848910996357175}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3884631952443048871
--- !u!33 &497542454746574031
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9144738582166621058}
m_GameObject: {fileID: 5613736239774672106}
m_Mesh: {fileID: 4898376589914736847, guid: b8000949872c53948ba6fe5768471d8c, type: 3}
--- !u!23 &7409676232927477598
--- !u!23 &6186583948359077942
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9144738582166621058}
m_GameObject: {fileID: 5613736239774672106}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
......@@ -172,3 +213,144 @@ MeshRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &6639848910144351729
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6639848910144351730}
- component: {fileID: 2970457175725895086}
m_Layer: 0
m_Name: Props4
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6639848910144351730
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6639848910144351729}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 6639848910996357175}
m_Father: {fileID: 855241462438040334}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &2970457175725895086
Animator:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6639848910144351729}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 770fb26f08fbbae459033ae04e608a9d, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0
--- !u!1 &6639848910996357174
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6639848910996357175}
m_Layer: 0
m_Name: Props4
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6639848910996357175
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6639848910996357174}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 8916184460720297721}
- {fileID: 8847864637312453932}
- {fileID: 3559471649338698318}
m_Father: {fileID: 6639848910144351730}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7198987875259221642
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3559471649338698318}
- component: {fileID: 8275667327538549905}
m_Layer: 0
m_Name: Trail
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3559471649338698318
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7198987875259221642}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 5.065, z: -0.34}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 6639848910996357175}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8275667327538549905
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7198987875259221642}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5ceb339997c8304e9354d4ce5ddc9da, type: 3}
m_Name:
m_EditorClassIdentifier:
_emit: 1
_emitTime: 0
_material: {fileID: 2100000, guid: 5f402d1520e5fa74fa21e08f85b71370, type: 2}
_lifeTime: 0.5
_colors:
- {r: 1, g: 0, b: 0, a: 1}
_sizes: []
_minVertexDistance: 0.1
_maxVertexDistance: 10
_maxAngle: 3
_autoDestruct: 0
subdivisions: 5
_base: {fileID: 6639848910144351730}
_tip: {fileID: 3559471649338698318}
fileFormatVersion: 2
guid: 3e92a648832bffd4da4c0f100b1fac92
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: efe06d6e3e7ca4e4a85597a34e1c1bd8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 8f21bfb23f7d5294f92e5199a964b724
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Swoosh01
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 05284a03916175a49a350e9085935f2f, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _TintColor: {r: 1, g: 1, b: 1, a: 1}
--- !u!1002 &2100001
EditorExtensionImpl:
serializedVersion: 6
fileFormatVersion: 2
guid: 5f402d1520e5fa74fa21e08f85b71370
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: SwordSwingMat 1
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _DecalTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 75ffda878191c7e4dbab2496c1598b87, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _TintColor: {r: 1, g: 1, b: 1, a: 1}
fileFormatVersion: 2
guid: cc69b18ee8bd8c941a1a02d2e0919b45
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
NativeFormatImporter:
userData:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: SwordSwingMat
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _DecalTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 19bac775940f2024a80fd4f854a89757, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _TintColor: {r: 1, g: 1, b: 1, a: 1}
fileFormatVersion: 2
guid: 75a9595d302878140b92c9b78b8d8a54
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
NativeFormatImporter:
userData:
fileFormatVersion: 2
guid: a9d7108b38121c2428c39a5f43f3ed3e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.18039216, g: 0.14117648, b: 0.12941177, a: 1}
m_AmbientEquatorColor: {r: 0.18039216, g: 0.14117648, b: 0.12941177, a: 1}
m_AmbientGroundColor: {r: 0.18039216, g: 0.14117648, b: 0.12941177, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &4
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 1
m_BakeResolution: 50
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 0
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 0
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 1024
m_ReflectionCompression: 2
m_MixedBakeMode: 1
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 512
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 0
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 0
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_UseShadowmask: 0
--- !u!196 &5
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666666
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &1061247
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1061248}
- component: {fileID: 1061249}
m_Layer: 0
m_Name: Trail
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1061248
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1061247}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.64, y: -0.07, z: -6.22}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 230387585}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1061249
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1061247}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5ceb339997c8304e9354d4ce5ddc9da, type: 3}
m_Name:
m_EditorClassIdentifier:
_emit: 1
_emitTime: 0
_material: {fileID: 2100000, guid: 5f402d1520e5fa74fa21e08f85b71370, type: 2}
_lifeTime: 0.25
_colors:
- {r: 1, g: 0, b: 0, a: 1}
_sizes: []
_minVertexDistance: 0.1
_maxVertexDistance: 10
_maxAngle: 3
_autoDestruct: 0
subdivisions: 4
_base: {fileID: 230387585}
_tip: {fileID: 1061248}
--- !u!1 &230387583
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 230387585}
- component: {fileID: 230387584}
m_Layer: 0
m_Name: SwordHolderFlameSword (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!95 &230387584
Animator:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 230387583}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 388372b3a9051524a8e235e6d5156b37, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0
--- !u!4 &230387585
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 230387583}
m_LocalRotation: {x: 0.051582117, y: -0.9973324, z: 0.002666954, w: -0.051579047}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.25, y: 0.25, z: 0.25}
m_Children:
- {fileID: 1061248}
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!81 &153374806408472020
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 153374806408472021}
m_Enabled: 1
--- !u!1 &153374806408472021
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 153374806408472024}
- component: {fileID: 153374806408472025}
- component: {fileID: 153374806408472026}
- component: {fileID: 153374806408472020}
m_Layer: 0
m_Name: Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &153374806408472024
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 153374806408472021}
m_LocalRotation: {x: 0.27059808, y: 0.6532815, z: -0.27059808, w: 0.6532815}
m_LocalPosition: {x: -3.8949594, y: 3.644274, z: -0.0000003319975}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 153374806572932675}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!20 &153374806408472025
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 153374806408472021}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0, g: 0.10040569, b: 0.2647059, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 0
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!124 &153374806408472026
Behaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 153374806408472021}
m_Enabled: 1
--- !u!114 &153374806572932672
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 153374806572932700}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 62cd7e0b3a08cf84e82658d9a3eaeb32, type: 3}
m_Name:
m_EditorClassIdentifier:
TrailData:
TrailMaterial: {fileID: 2100000, guid: 75a9595d302878140b92c9b78b8d8a54, type: 2}
Lifetime: 0.25
UsingSimpleSize: 0
SimpleSizeOverLifeStart: 0
SimpleSizeOverLifeEnd: 0
SizeOverLife:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.15
value: 0.005
inSlope: -0.0010454096
outSlope: -0.0010454096
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
UsingSimpleColor: 0
SimpleColorOverLifeStart: {r: 0, g: 0, b: 0, a: 0}
SimpleColorOverLifeEnd: {r: 0, g: 0, b: 0, a: 0}
ColorOverLife:
serializedVersion: 2
key0: {r: 0.9490196, g: 0.6117647, b: 0.105882354, a: 1}
key1: {r: 1, g: 0, b: 0, a: 0}
key2: {r: 0, g: 0, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 65535
ctime2: 0
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_NumColorKeys: 2
m_NumAlphaKeys: 2
StretchSizeToFit: 0
StretchColorToFit: 0
MaterialTileLength: 0
UseForwardOverride: 1
ForwardOverride: {x: 0, y: 0, z: 1}
ForwardOverrideRelative: 1
Emit: 0
MinControlPointDistance: 0.01
MaxControlPoints: 50
PointsBetweenControlPoints: 4
--- !u!114 &153374806572932673
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 153374806572932700}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8cbea67046d33fb44946ed794b0b7387, type: 3}
m_Name:
m_EditorClassIdentifier:
Trails:
- {fileID: 153374806572932672}
--- !u!4 &153374806572932675
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 153374806572932700}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 153374806408472024}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &153374806572932700
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 153374806572932675}
- component: {fileID: 153374806572932673}
- component: {fileID: 153374806572932672}
m_Layer: 0
m_Name: MouseFollower
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
fileFormatVersion: 2
guid: 7ccc38aaa8b463f47973f36ddd8a806a
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
DefaultImporter:
userData:
fileFormatVersion: 2
guid: 965efb44052dd76479d52d4ecfca0165
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
using System.Collections;
public class AlwaysForward : MonoBehaviour
{
public float Speed;
public float yRotation;
void Update()
{
transform.position = transform.position + transform.forward * Speed;
transform.Rotate(Vector3.up, yRotation);
}
}
fileFormatVersion: 2
guid: b8f6c4c6b627eab45a83032e1da3c3bc
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using UnityEngine;
using System.Collections;
public class ConstForce : MonoBehaviour {
public float speed;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
foreach(var plume in GetComponents<PigeonCoopToolkit.Effects.Trails.SmokePlume>())
{
plume.ConstantForce = transform.forward * speed;
}
}
}
fileFormatVersion: 2
guid: 45ecc38d70ecd26448fa089544841231
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using UnityEngine;
using System.Collections;
public class DestroyAfterTime : MonoBehaviour
{
public float lifetime;
// Use this for initialization
void Start ()
{
Invoke("DestroyMe", lifetime);
}
void DestroyMe()
{
Destroy(gameObject);
}
}
fileFormatVersion: 2
guid: ac5858661138b07409f0c43963423a61
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using UnityEngine;
using System.Collections;
public class FPSController : MonoBehaviour
{
public Animator CamAnimator, WeaponAnimator;
public float moveSpeed;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
CamAnimator.SetBool("Running", Input.GetKey(KeyCode.W));
WeaponAnimator.SetBool("Fire", Input.GetKey(KeyCode.Space));
if( Input.GetKey(KeyCode.W))
{
transform.position = transform.position + transform.forward*moveSpeed*Time.deltaTime;
}
}
}
fileFormatVersion: 2
guid: 5c8a24f5bbbf72d45a95c168354e36c9
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using PigeonCoopToolkit.Effects.Trails;
using UnityEngine;
using System.Collections;
public class FPSWeaponTrigger : MonoBehaviour
{
public Transform ShellEjectionTransform;
public float EjectionForce;
public Rigidbody Shell;
public Transform Muzzle;
public GameObject Bullet;
public float SmokeAfter;
public float SmokeMax;
public float SmokeIncrement;
public SmokePlume MuzzlePlume;
public GameObject MuzzleFlashObject;
private float _smoke;
void Update()
{
MuzzlePlume.Emit = _smoke > SmokeAfter;
_smoke -= Time.deltaTime;
if(_smoke > SmokeMax)
_smoke = SmokeMax;
if (_smoke < 0)
_smoke = 0;
}
public void Fire()
{
MuzzleFlashObject.SetActive(true);
Invoke("LightsOff",0.05f);
_smoke += SmokeIncrement;
Rigidbody r = (Instantiate(Shell.gameObject, ShellEjectionTransform.position, ShellEjectionTransform.rotation) as
GameObject).GetComponent<Rigidbody>();
r.velocity = (ShellEjectionTransform.right * EjectionForce) + Random.onUnitSphere * 0.25f;
r.angularVelocity = Random.onUnitSphere*EjectionForce;
Instantiate(Bullet, Muzzle.transform.position, Muzzle.rotation);
}
private void LightsOff()
{
MuzzleFlashObject.SetActive(false);
}
}
fileFormatVersion: 2
guid: 32b0275b28b2be643ab30dd31fba0d7e
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/**
* Interpolation utility functions: easing, bezier, and catmull-rom.
* Consider using Unity's Animation curve editor and AnimationCurve class
* before scripting the desired behaviour using this utility.
*
* Interpolation functionality available at different levels of abstraction.
* Low level access via individual easing functions (ex. EaseInOutCirc),
* Bezier(), and CatmullRom(). High level access using sequence generators,
* NewEase(), NewBezier(), and NewCatmullRom().
*
* Sequence generators are typically used as follows:
*
* IEnumerable<Vector3> sequence = Interpolate.New[Ease|Bezier|CatmulRom](configuration);
* foreach (Vector3 newPoint in sequence) {
* transform.position = newPoint;
* yield return WaitForSeconds(1.0f);
* }
*
* Or:
*
* IEnumerator<Vector3> sequence = Interpolate.New[Ease|Bezier|CatmulRom](configuration).GetEnumerator();
* function Update() {
* if (sequence.MoveNext()) {
* transform.position = sequence.Current;
* }
* }
*
* The low level functions work similarly to Unity's built in Lerp and it is
* up to you to track and pass in elapsedTime and duration on every call. The
* functions take this form (or the logical equivalent for Bezier() and CatmullRom()).
*
* transform.position = ease(start, distance, elapsedTime, duration);
*
* For convenience in configuration you can use the Ease(EaseType) function to
* look up a concrete easing function:
*
* [SerializeField]
* Interpolate.EaseType easeType; // set using Unity's property inspector
* Interpolate.Function ease; // easing of a particular EaseType
* function Awake() {
* ease = Interpolate.Ease(easeType);
* }
*
* @author Fernando Zapata (fernando@cpudreams.com)
* @Traduzione Andrea85cs (andrea85cs@dynematica.it)
*/
public class Interpolate {
/**
* Different methods of easing interpolation.
*/
public enum EaseType {
Linear,
EaseInQuad,
EaseOutQuad,
EaseInOutQuad,
EaseInCubic,
EaseOutCubic,
EaseInOutCubic,
EaseInQuart,
EaseOutQuart,
EaseInOutQuart,
EaseInQuint,
EaseOutQuint,
EaseInOutQuint,
EaseInSine,
EaseOutSine,
EaseInOutSine,
EaseInExpo,
EaseOutExpo,
EaseInOutExpo,
EaseInCirc,
EaseOutCirc,
EaseInOutCirc
}
/**
* Sequence of eleapsedTimes until elapsedTime is >= duration.
*
* Note: elapsedTimes are calculated using the value of Time.deltatTime each
* time a value is requested.
*/
static Vector3 Identity(Vector3 v) {
return v;
}
static Vector3 TransformDotPosition(Transform t) {
return t.position;
}
static IEnumerable<float> NewTimer(float duration) {
float elapsedTime = 0.0f;
while (elapsedTime < duration) {
yield return elapsedTime;
elapsedTime += Time.deltaTime;
// make sure last value is never skipped
if (elapsedTime >= duration) {
yield return elapsedTime;
}
}
}
public delegate Vector3 ToVector3<T>(T v);
public delegate float Function(float a, float b, float c, float d);
/**
* Generates sequence of integers from start to end (inclusive) one step
* at a time.
*/
static IEnumerable<float> NewCounter(int start, int end, int step) {
for (int i = start; i <= end; i += step) {
yield return i;
}
}
/**
* Returns sequence generator from start to end over duration using the
* given easing function. The sequence is generated as it is accessed
* using the Time.deltaTime to calculate the portion of duration that has
* elapsed.
*/
public static IEnumerator NewEase(Function ease, Vector3 start, Vector3 end, float duration) {
IEnumerable<float> timer = Interpolate.NewTimer(duration);
return NewEase(ease, start, end, duration, timer);
}
/**
* Instead of easing based on time, generate n interpolated points (slices)
* between the start and end positions.
*/
public static IEnumerator NewEase(Function ease, Vector3 start, Vector3 end, int slices) {
IEnumerable<float> counter = Interpolate.NewCounter(0, slices + 1, 1);
return NewEase(ease, start, end, slices + 1, counter);
}
/**
* Generic easing sequence generator used to implement the time and
* slice variants. Normally you would not use this function directly.
*/
static IEnumerator NewEase(Function ease, Vector3 start, Vector3 end, float total, IEnumerable<float> driver) {
Vector3 distance = end - start;
foreach (float i in driver) {
yield return Ease(ease, start, distance, i, total);
}
}
/**
* Vector3 interpolation using given easing method. Easing is done independently
* on all three vector axis.
*/
static Vector3 Ease(Function ease, Vector3 start, Vector3 distance, float elapsedTime, float duration) {
start.x = ease(start.x, distance.x, elapsedTime, duration);
start.y = ease(start.y, distance.y, elapsedTime, duration);
start.z = ease(start.z, distance.z, elapsedTime, duration);
return start;
}
/**
* Returns the static method that implements the given easing type for scalars.
* Use this method to easily switch between easing interpolation types.
*
* All easing methods clamp elapsedTime so that it is always <= duration.
*
* var ease = Interpolate.Ease(EaseType.EaseInQuad);
* i = ease(start, distance, elapsedTime, duration);
*/
public static Function Ease(EaseType type) {
// Source Flash easing functions:
// http://gizma.com/easing/
// http://www.robertpenner.com/easing/easing_demo.html
//
// Changed to use more friendly variable names, that follow my Lerp
// conventions:
// start = b (start value)
// distance = c (change in value)
// elapsedTime = t (current time)
// duration = d (time duration)
Function f = null;
switch (type) {
case EaseType.Linear: f = Interpolate.Linear; break;
case EaseType.EaseInQuad: f = Interpolate.EaseInQuad; break;
case EaseType.EaseOutQuad: f = Interpolate.EaseOutQuad; break;
case EaseType.EaseInOutQuad: f = Interpolate.EaseInOutQuad; break;
case EaseType.EaseInCubic: f = Interpolate.EaseInCubic; break;
case EaseType.EaseOutCubic: f = Interpolate.EaseOutCubic; break;
case EaseType.EaseInOutCubic: f = Interpolate.EaseInOutCubic; break;
case EaseType.EaseInQuart: f = Interpolate.EaseInQuart; break;
case EaseType.EaseOutQuart: f = Interpolate.EaseOutQuart; break;
case EaseType.EaseInOutQuart: f = Interpolate.EaseInOutQuart; break;
case EaseType.EaseInQuint: f = Interpolate.EaseInQuint; break;
case EaseType.EaseOutQuint: f = Interpolate.EaseOutQuint; break;
case EaseType.EaseInOutQuint: f = Interpolate.EaseInOutQuint; break;
case EaseType.EaseInSine: f = Interpolate.EaseInSine; break;
case EaseType.EaseOutSine: f = Interpolate.EaseOutSine; break;
case EaseType.EaseInOutSine: f = Interpolate.EaseInOutSine; break;
case EaseType.EaseInExpo: f = Interpolate.EaseInExpo; break;
case EaseType.EaseOutExpo: f = Interpolate.EaseOutExpo; break;
case EaseType.EaseInOutExpo: f = Interpolate.EaseInOutExpo; break;
case EaseType.EaseInCirc: f = Interpolate.EaseInCirc; break;
case EaseType.EaseOutCirc: f = Interpolate.EaseOutCirc; break;
case EaseType.EaseInOutCirc: f = Interpolate.EaseInOutCirc; break;
}
return f;
}
/**
* Returns sequence generator from the first node to the last node over
* duration time using the points in-between the first and last node
* as control points of a bezier curve used to generate the interpolated points
* in the sequence. If there are no control points (ie. only two nodes, first
* and last) then this behaves exactly the same as NewEase(). In other words
* a zero-degree bezier spline curve is just the easing method. The sequence
* is generated as it is accessed using the Time.deltaTime to calculate the
* portion of duration that has elapsed.
*/
public static IEnumerable<Vector3> NewBezier(Function ease, Transform[] nodes, float duration) {
IEnumerable<float> timer = Interpolate.NewTimer(duration);
return NewBezier<Transform>(ease, nodes, TransformDotPosition, duration, timer);
}
/**
* Instead of interpolating based on time, generate n interpolated points
* (slices) between the first and last node.
*/
public static IEnumerable<Vector3> NewBezier(Function ease, Transform[] nodes, int slices) {
IEnumerable<float> counter = NewCounter(0, slices + 1, 1);
return NewBezier<Transform>(ease, nodes, TransformDotPosition, slices + 1, counter);
}
/**
* A Vector3[] variation of the Transform[] NewBezier() function.
* Same functionality but using Vector3s to define bezier curve.
*/
public static IEnumerable<Vector3> NewBezier(Function ease, Vector3[] points, float duration) {
IEnumerable<float> timer = NewTimer(duration);
return NewBezier<Vector3>(ease, points, Identity, duration, timer);
}
/**
* A Vector3[] variation of the Transform[] NewBezier() function.
* Same functionality but using Vector3s to define bezier curve.
*/
public static IEnumerable<Vector3> NewBezier(Function ease, Vector3[] points, int slices) {
IEnumerable<float> counter = NewCounter(0, slices + 1, 1);
return NewBezier<Vector3>(ease, points, Identity, slices + 1, counter);
}
/**
* Generic bezier spline sequence generator used to implement the time and
* slice variants. Normally you would not use this function directly.
*/
static IEnumerable<Vector3> NewBezier<T>(Function ease, IList nodes, ToVector3<T> toVector3, float maxStep, IEnumerable<float> steps) {
// need at least two nodes to spline between
if (nodes.Count >= 2) {
// copy nodes array since Bezier is destructive
Vector3[] points = new Vector3[nodes.Count];
foreach (float step in steps) {
// re-initialize copy before each destructive call to Bezier
for (int i = 0; i < nodes.Count; i++) {
points[i] = toVector3((T)nodes[i]);
}
yield return Bezier(ease, points, step, maxStep);
// make sure last value is always generated
}
}
}
/**
* A Vector3 n-degree bezier spline.
*
* WARNING: The points array is modified by Bezier. See NewBezier() for a
* safe and user friendly alternative.
*
* You can pass zero control points, just the start and end points, for just
* plain easing. In other words a zero-degree bezier spline curve is just the
* easing method.
*
* @param points start point, n control points, end point
*/
static Vector3 Bezier(Function ease, Vector3[] points, float elapsedTime, float duration) {
// Reference: http://ibiblio.org/e-notes/Splines/Bezier.htm
// Interpolate the n starting points to generate the next j = (n - 1) points,
// then interpolate those n - 1 points to generate the next n - 2 points,
// continue this until we have generated the last point (n - (n - 1)), j = 1.
// We store the next set of output points in the same array as the
// input points used to generate them. This works because we store the
// result in the slot of the input point that is no longer used for this
// iteration.
for (int j = points.Length - 1; j > 0; j--) {
for (int i = 0; i < j; i++) {
points[i].x = ease(points[i].x, points[i + 1].x - points[i].x, elapsedTime, duration);
points[i].y = ease(points[i].y, points[i + 1].y - points[i].y, elapsedTime, duration);
points[i].z = ease(points[i].z, points[i + 1].z - points[i].z, elapsedTime, duration);
}
}
return points[0];
}
/**
* Returns sequence generator from the first node, through each control point,
* and to the last node. N points are generated between each node (slices)
* using Catmull-Rom.
*/
public static IEnumerable<Vector3> NewCatmullRom(Transform[] nodes, int slices, bool loop) {
return NewCatmullRom<Transform>(nodes, TransformDotPosition, slices, loop);
}
/**
* A Vector3[] variation of the Transform[] NewCatmullRom() function.
* Same functionality but using Vector3s to define curve.
*/
public static IEnumerable<Vector3> NewCatmullRom(Vector3[] points, int slices, bool loop) {
return NewCatmullRom<Vector3>(points, Identity, slices, loop);
}
/**
* Generic catmull-rom spline sequence generator used to implement the
* Vector3[] and Transform[] variants. Normally you would not use this
* function directly.
*/
static IEnumerable<Vector3> NewCatmullRom<T>(IList nodes, ToVector3<T> toVector3, int slices, bool loop) {
// need at least two nodes to spline between
if (nodes.Count >= 2) {
// yield the first point explicitly, if looping the first point
// will be generated again in the step for loop when interpolating
// from last point back to the first point
yield return toVector3((T)nodes[0]);
int last = nodes.Count - 1;
for (int current = 0; loop || current < last; current++) {
// wrap around when looping
if (loop && current > last) {
current = 0;
}
// handle edge cases for looping and non-looping scenarios
// when looping we wrap around, when not looping use start for previous
// and end for next when you at the ends of the nodes array
int previous = (current == 0) ? ((loop) ? last : current) : current - 1;
int start = current;
int end = (current == last) ? ((loop) ? 0 : current) : current + 1;
int next = (end == last) ? ((loop) ? 0 : end) : end + 1;
// adding one guarantees yielding at least the end point
int stepCount = slices + 1;
for (int step = 1; step <= stepCount; step++) {
yield return CatmullRom(toVector3((T)nodes[previous]),
toVector3((T)nodes[start]),
toVector3((T)nodes[end]),
toVector3((T)nodes[next]),
step, stepCount);
}
}
}
}
/**
* A Vector3 Catmull-Rom spline. Catmull-Rom splines are similar to bezier
* splines but have the useful property that the generated curve will go
* through each of the control points.
*
* NOTE: The NewCatmullRom() functions are an easier to use alternative to this
* raw Catmull-Rom implementation.
*
* @param previous the point just before the start point or the start point
* itself if no previous point is available
* @param start generated when elapsedTime == 0
* @param end generated when elapsedTime >= duration
* @param next the point just after the end point or the end point itself if no
* next point is available
*/
static Vector3 CatmullRom(Vector3 previous, Vector3 start, Vector3 end, Vector3 next,
float elapsedTime, float duration) {
// References used:
// p.266 GemsV1
//
// tension is often set to 0.5 but you can use any reasonable value:
// http://www.cs.cmu.edu/~462/projects/assn2/assn2/catmullRom.pdf
//
// bias and tension controls:
// http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/interpolation/
float percentComplete = elapsedTime / duration;
float percentCompleteSquared = percentComplete * percentComplete;
float percentCompleteCubed = percentCompleteSquared * percentComplete;
return previous * (-0.5f * percentCompleteCubed +
percentCompleteSquared -
0.5f * percentComplete) +
start * ( 1.5f * percentCompleteCubed +
-2.5f * percentCompleteSquared + 1.0f) +
end * (-1.5f * percentCompleteCubed +
2.0f * percentCompleteSquared +
0.5f * percentComplete) +
next * ( 0.5f * percentCompleteCubed -
0.5f * percentCompleteSquared);
}
/**
* Linear interpolation (same as Mathf.Lerp)
*/
static float Linear(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime to be <= duration
if (elapsedTime > duration) { elapsedTime = duration; }
return distance * (elapsedTime / duration) + start;
}
/**
* quadratic easing in - accelerating from zero velocity
*/
static float EaseInQuad(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 1.0f : elapsedTime / duration;
return distance * elapsedTime * elapsedTime + start;
}
/**
* quadratic easing out - decelerating to zero velocity
*/
static float EaseOutQuad(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 1.0f : elapsedTime / duration;
return -distance * elapsedTime * (elapsedTime - 2) + start;
}
/**
* quadratic easing in/out - acceleration until halfway, then deceleration
*/
static float EaseInOutQuad(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 2.0f : elapsedTime / (duration / 2);
if (elapsedTime < 1) return distance / 2 * elapsedTime * elapsedTime + start;
elapsedTime--;
return -distance / 2 * (elapsedTime * (elapsedTime - 2) - 1) + start;
}
/**
* cubic easing in - accelerating from zero velocity
*/
static float EaseInCubic(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 1.0f : elapsedTime / duration;
return distance * elapsedTime * elapsedTime * elapsedTime + start;
}
/**
* cubic easing out - decelerating to zero velocity
*/
static float EaseOutCubic(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 1.0f : elapsedTime / duration;
elapsedTime--;
return distance * (elapsedTime * elapsedTime * elapsedTime + 1) + start;
}
/**
* cubic easing in/out - acceleration until halfway, then deceleration
*/
static float EaseInOutCubic(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 2.0f : elapsedTime / (duration / 2);
if (elapsedTime < 1) return distance / 2 * elapsedTime * elapsedTime * elapsedTime + start;
elapsedTime -= 2;
return distance / 2 * (elapsedTime * elapsedTime * elapsedTime + 2) + start;
}
/**
* quartic easing in - accelerating from zero velocity
*/
static float EaseInQuart(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 1.0f : elapsedTime / duration;
return distance * elapsedTime * elapsedTime * elapsedTime * elapsedTime + start;
}
/**
* quartic easing out - decelerating to zero velocity
*/
static float EaseOutQuart(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 1.0f : elapsedTime / duration;
elapsedTime--;
return -distance * (elapsedTime * elapsedTime * elapsedTime * elapsedTime - 1) + start;
}
/**
* quartic easing in/out - acceleration until halfway, then deceleration
*/
static float EaseInOutQuart(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 2.0f : elapsedTime / (duration / 2);
if (elapsedTime < 1) return distance / 2 * elapsedTime * elapsedTime * elapsedTime * elapsedTime + start;
elapsedTime -= 2;
return -distance / 2 * (elapsedTime * elapsedTime * elapsedTime * elapsedTime - 2) + start;
}
/**
* quintic easing in - accelerating from zero velocity
*/
static float EaseInQuint(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 1.0f : elapsedTime / duration;
return distance * elapsedTime * elapsedTime * elapsedTime * elapsedTime * elapsedTime + start;
}
/**
* quintic easing out - decelerating to zero velocity
*/
static float EaseOutQuint(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 1.0f : elapsedTime / duration;
elapsedTime--;
return distance * (elapsedTime * elapsedTime * elapsedTime * elapsedTime * elapsedTime + 1) + start;
}
/**
* quintic easing in/out - acceleration until halfway, then deceleration
*/
static float EaseInOutQuint(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 2.0f : elapsedTime / (duration / 2f);
if (elapsedTime < 1) return distance / 2 * elapsedTime * elapsedTime * elapsedTime * elapsedTime * elapsedTime + start;
elapsedTime -= 2;
return distance / 2 * (elapsedTime * elapsedTime * elapsedTime * elapsedTime * elapsedTime + 2) + start;
}
/**
* sinusoidal easing in - accelerating from zero velocity
*/
static float EaseInSine(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime to be <= duration
if (elapsedTime > duration) { elapsedTime = duration; }
return -distance * Mathf.Cos(elapsedTime / duration * (Mathf.PI / 2)) + distance + start;
}
/**
* sinusoidal easing out - decelerating to zero velocity
*/
static float EaseOutSine(float start, float distance, float elapsedTime, float duration) {
if (elapsedTime > duration) { elapsedTime = duration; }
return distance * Mathf.Sin(elapsedTime / duration * (Mathf.PI / 2)) + start;
}
/**
* sinusoidal easing in/out - accelerating until halfway, then decelerating
*/
static float EaseInOutSine(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime to be <= duration
if (elapsedTime > duration) { elapsedTime = duration; }
return -distance / 2 * (Mathf.Cos(Mathf.PI * elapsedTime / duration) - 1) + start;
}
/**
* exponential easing in - accelerating from zero velocity
*/
static float EaseInExpo(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime to be <= duration
if (elapsedTime > duration) { elapsedTime = duration; }
return distance * Mathf.Pow(2, 10 * (elapsedTime / duration - 1)) + start;
}
/**
* exponential easing out - decelerating to zero velocity
*/
static float EaseOutExpo(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime to be <= duration
if (elapsedTime > duration) { elapsedTime = duration; }
return distance * (-Mathf.Pow(2, -10 * elapsedTime / duration) + 1) + start;
}
/**
* exponential easing in/out - accelerating until halfway, then decelerating
*/
static float EaseInOutExpo(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 2.0f : elapsedTime / (duration / 2);
if (elapsedTime < 1) return distance / 2 * Mathf.Pow(2, 10 * (elapsedTime - 1)) + start;
elapsedTime--;
return distance / 2 * (-Mathf.Pow(2, -10 * elapsedTime) + 2) + start;
}
/**
* circular easing in - accelerating from zero velocity
*/
static float EaseInCirc(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 1.0f : elapsedTime / duration;
return -distance * (Mathf.Sqrt(1 - elapsedTime * elapsedTime) - 1) + start;
}
/**
* circular easing out - decelerating to zero velocity
*/
static float EaseOutCirc(float start, float distance, float elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 1.0f : elapsedTime / duration;
elapsedTime--;
return distance * Mathf.Sqrt(1 - elapsedTime * elapsedTime) + start;
}
/**
* circular easing in/out - acceleration until halfway, then deceleration
*/
static float EaseInOutCirc(float start, float distance, float
elapsedTime, float duration) {
// clamp elapsedTime so that it cannot be greater than duration
elapsedTime = (elapsedTime > duration) ? 2.0f : elapsedTime / (duration / 2);
if (elapsedTime < 1) return -distance / 2 * (Mathf.Sqrt(1 - elapsedTime * elapsedTime) - 1) + start;
elapsedTime -= 2;
return distance / 2 * (Mathf.Sqrt(1 - elapsedTime * elapsedTime) + 1) + start;
}
}
fileFormatVersion: 2
guid: c2fa62ec2eb8e5d4bbf44d939f987647
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
using System.Collections;
public class LookAtTarget : MonoBehaviour
{
[SerializeField]
Transform _target = null;
[SerializeField]
float _speed = 0.5f;
Vector3 _lookAtTarget;
void Update()
{
_lookAtTarget = Vector3.Lerp(_lookAtTarget, _target.position, Time.deltaTime * _speed);
transform.LookAt(_lookAtTarget);
}
}
fileFormatVersion: 2
guid: 27ad68d3ec8caa3479b58a404cb46e1f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
#define USE_INTERPOLATION
//
// By Anomalous Underdog, 2011
//
// Based on code made by Forest Johnson (Yoggy) and xyber
//
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class MeleeWeaponTrail : MonoBehaviour
{
[SerializeField]
bool _emit = true;
public bool Emit { set{_emit = value;} }
bool _use = true;
public bool Use { set{_use = value;} }
[SerializeField]
float _emitTime = 0.0f;
[SerializeField]
Material _material;
[SerializeField]
float _lifeTime = 1.0f;
[SerializeField]
Color[] _colors;
[SerializeField]
float[] _sizes;
[SerializeField]
float _minVertexDistance = 0.1f;
[SerializeField]
float _maxVertexDistance = 10.0f;
float _minVertexDistanceSqr = 0.0f;
float _maxVertexDistanceSqr = 0.0f;
[SerializeField]
float _maxAngle = 3.00f;
[SerializeField]
bool _autoDestruct = false;
#if USE_INTERPOLATION
[SerializeField]
int subdivisions = 4;
#endif
[SerializeField]
Transform _base;
[SerializeField]
Transform _tip;
List<Point> _points = new List<Point>();
#if USE_INTERPOLATION
List<Point> _smoothedPoints = new List<Point>();
#endif
GameObject _trailObject;
Mesh _trailMesh;
Vector3 _lastPosition;
[System.Serializable]
public class Point
{
public float timeCreated = 0.0f;
public Vector3 basePosition;
public Vector3 tipPosition;
}
void Start()
{
_lastPosition = transform.position;
_trailObject = new GameObject("Trail");
_trailObject.transform.parent = null;
_trailObject.transform.position = Vector3.zero;
_trailObject.transform.rotation = Quaternion.identity;
_trailObject.transform.localScale = Vector3.one;
_trailObject.AddComponent(typeof(MeshFilter));
_trailObject.AddComponent(typeof(MeshRenderer));
_trailObject.GetComponent<Renderer>().material = _material;
_trailMesh = new Mesh();
_trailMesh.name = name + "TrailMesh";
_trailObject.GetComponent<MeshFilter>().mesh = _trailMesh;
_minVertexDistanceSqr = _minVertexDistance * _minVertexDistance;
_maxVertexDistanceSqr = _maxVertexDistance * _maxVertexDistance;
}
void OnDisable()
{
Destroy(_trailObject);
}
void Update()
{
if (!_use)
{
return;
}
if (_emit && _emitTime != 0)
{
_emitTime -= Time.deltaTime;
if (_emitTime == 0) _emitTime = -1;
if (_emitTime < 0) _emit = false;
}
if (!_emit && _points.Count == 0 && _autoDestruct)
{
Destroy(_trailObject);
Destroy(gameObject);
}
// early out if there is no camera
if (!Camera.main) return;
// if we have moved enough, create a new vertex and make sure we rebuild the mesh
float theDistanceSqr = (_lastPosition - transform.position).sqrMagnitude;
if (_emit)
{
if (theDistanceSqr > _minVertexDistanceSqr)
{
bool make = false;
if (_points.Count < 3)
{
make = true;
}
else
{
//Vector3 l1 = _points[_points.Count - 2].basePosition - _points[_points.Count - 3].basePosition;
//Vector3 l2 = _points[_points.Count - 1].basePosition - _points[_points.Count - 2].basePosition;
Vector3 l1 = _points[_points.Count - 2].tipPosition - _points[_points.Count - 3].tipPosition;
Vector3 l2 = _points[_points.Count - 1].tipPosition - _points[_points.Count - 2].tipPosition;
if (Vector3.Angle(l1, l2) > _maxAngle || theDistanceSqr > _maxVertexDistanceSqr) make = true;
}
if (make)
{
Point p = new Point();
p.basePosition = _base.position;
p.tipPosition = _tip.position;
p.timeCreated = Time.time;
_points.Add(p);
_lastPosition = transform.position;
#if USE_INTERPOLATION
if (_points.Count == 1)
{
_smoothedPoints.Add(p);
}
else if (_points.Count > 1)
{
// add 1+subdivisions for every possible pair in the _points
for (int n = 0; n < 1+subdivisions; ++n)
_smoothedPoints.Add(p);
}
// we use 4 control points for the smoothing
if (_points.Count >= 4)
{
Vector3[] tipPoints = new Vector3[4];
tipPoints[0] = _points[_points.Count - 4].tipPosition;
tipPoints[1] = _points[_points.Count - 3].tipPosition;
tipPoints[2] = _points[_points.Count - 2].tipPosition;
tipPoints[3] = _points[_points.Count - 1].tipPosition;
//IEnumerable<Vector3> smoothTip = Interpolate.NewBezier(Interpolate.Ease(Interpolate.EaseType.Linear), tipPoints, subdivisions);
IEnumerable<Vector3> smoothTip = Interpolate.NewCatmullRom(tipPoints, subdivisions, false);
Vector3[] basePoints = new Vector3[4];
basePoints[0] = _points[_points.Count - 4].basePosition;
basePoints[1] = _points[_points.Count - 3].basePosition;
basePoints[2] = _points[_points.Count - 2].basePosition;
basePoints[3] = _points[_points.Count - 1].basePosition;
//IEnumerable<Vector3> smoothBase = Interpolate.NewBezier(Interpolate.Ease(Interpolate.EaseType.Linear), basePoints, subdivisions);
IEnumerable<Vector3> smoothBase = Interpolate.NewCatmullRom(basePoints, subdivisions, false);
List<Vector3> smoothTipList = new List<Vector3>(smoothTip);
List<Vector3> smoothBaseList = new List<Vector3>(smoothBase);
float firstTime = _points[_points.Count - 4].timeCreated;
float secondTime = _points[_points.Count - 1].timeCreated;
//Debug.Log(" smoothTipList.Count: " + smoothTipList.Count);
for (int n = 0; n < smoothTipList.Count; ++n)
{
int idx = _smoothedPoints.Count - (smoothTipList.Count-n);
// there are moments when the _smoothedPoints are lesser
// than what is required, when elements from it are removed
if (idx > -1 && idx < _smoothedPoints.Count)
{
Point sp = new Point();
sp.basePosition = smoothBaseList[n];
sp.tipPosition = smoothTipList[n];
sp.timeCreated = Mathf.Lerp(firstTime, secondTime, (float)n/smoothTipList.Count);
_smoothedPoints[idx] = sp;
}
//else
//{
// Debug.LogError(idx + "/" + _smoothedPoints.Count);
//}
}
}
#endif
}
else
{
_points[_points.Count - 1].basePosition = _base.position;
_points[_points.Count - 1].tipPosition = _tip.position;
//_points[_points.Count - 1].timeCreated = Time.time;
#if USE_INTERPOLATION
_smoothedPoints[_smoothedPoints.Count - 1].basePosition = _base.position;
_smoothedPoints[_smoothedPoints.Count - 1].tipPosition = _tip.position;
#endif
}
}
else
{
if (_points.Count > 0)
{
_points[_points.Count - 1].basePosition = _base.position;
_points[_points.Count - 1].tipPosition = _tip.position;
//_points[_points.Count - 1].timeCreated = Time.time;
}
#if USE_INTERPOLATION
if (_smoothedPoints.Count > 0)
{
_smoothedPoints[_smoothedPoints.Count - 1].basePosition = _base.position;
_smoothedPoints[_smoothedPoints.Count - 1].tipPosition = _tip.position;
}
#endif
}
}
RemoveOldPoints(_points);
if (_points.Count == 0)
{
_trailMesh.Clear();
}
#if USE_INTERPOLATION
RemoveOldPoints(_smoothedPoints);
if (_smoothedPoints.Count == 0)
{
_trailMesh.Clear();
}
#endif
#if USE_INTERPOLATION
List<Point> pointsToUse = _smoothedPoints;
#else
List<Point> pointsToUse = _points;
#endif
if (pointsToUse.Count > 1)
{
Vector3[] newVertices = new Vector3[pointsToUse.Count * 2];
Vector2[] newUV = new Vector2[pointsToUse.Count * 2];
int[] newTriangles = new int[(pointsToUse.Count - 1) * 6];
Color[] newColors = new Color[pointsToUse.Count * 2];
for (int n = 0; n < pointsToUse.Count; ++n)
{
Point p = pointsToUse[n];
float time = (Time.time - p.timeCreated) / _lifeTime;
Color color = Color.Lerp(Color.white, Color.clear, time);
if (_colors != null && _colors.Length > 0)
{
float colorTime = time * (_colors.Length - 1);
float min = Mathf.Floor(colorTime);
float max = Mathf.Clamp(Mathf.Ceil(colorTime), 1, _colors.Length - 1);
float lerp = Mathf.InverseLerp(min, max, colorTime);
if (min >= _colors.Length) min = _colors.Length - 1; if (min < 0) min = 0;
if (max >= _colors.Length) max = _colors.Length - 1; if (max < 0) max = 0;
color = Color.Lerp(_colors[(int)min], _colors[(int)max], lerp);
}
float size = 0f;
if (_sizes != null && _sizes.Length > 0)
{
float sizeTime = time * (_sizes.Length - 1);
float min = Mathf.Floor(sizeTime);
float max = Mathf.Clamp(Mathf.Ceil(sizeTime), 1, _sizes.Length - 1);
float lerp = Mathf.InverseLerp(min, max, sizeTime);
if (min >= _sizes.Length) min = _sizes.Length - 1; if (min < 0) min = 0;
if (max >= _sizes.Length) max = _sizes.Length - 1; if (max < 0) max = 0;
size = Mathf.Lerp(_sizes[(int)min], _sizes[(int)max], lerp);
}
Vector3 lineDirection = p.tipPosition - p.basePosition;
newVertices[n * 2] = p.basePosition - (lineDirection * (size * 0.5f));
newVertices[(n * 2) + 1] = p.tipPosition + (lineDirection * (size * 0.5f));
newColors[n * 2] = newColors[(n * 2) + 1] = color;
float uvRatio = (float)n/pointsToUse.Count;
newUV[n * 2] = new Vector2(uvRatio, 0);
newUV[(n * 2) + 1] = new Vector2(uvRatio, 1);
if (n > 0)
{
newTriangles[(n - 1) * 6] = (n * 2) - 2;
newTriangles[((n - 1) * 6) + 1] = (n * 2) - 1;
newTriangles[((n - 1) * 6) + 2] = n * 2;
newTriangles[((n - 1) * 6) + 3] = (n * 2) + 1;
newTriangles[((n - 1) * 6) + 4] = n * 2;
newTriangles[((n - 1) * 6) + 5] = (n * 2) - 1;
}
}
_trailMesh.Clear();
_trailMesh.vertices = newVertices;
_trailMesh.colors = newColors;
_trailMesh.uv = newUV;
_trailMesh.triangles = newTriangles;
}
}
void RemoveOldPoints(List<Point> pointList)
{
List<Point> remove = new List<Point>();
foreach (Point p in pointList)
{
// cull old points first
if (Time.time - p.timeCreated > _lifeTime)
{
remove.Add(p);
}
}
foreach (Point p in remove)
{
pointList.Remove(p);
}
}
}
fileFormatVersion: 2
guid: d5ceb339997c8304e9354d4ce5ddc9da
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using PigeonCoopToolkit.Effects.Trails;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class MouseFollower : MonoBehaviour
{
public List<TrailRenderer_Base> Trails;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButton(0))
{
Trails.ForEach(a => a.Emit = true);
transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.nearClipPlane + 0.01f));
}
else
{
Trails.ForEach(a => a.Emit = false);
}
}
}
fileFormatVersion: 2
guid: 8cbea67046d33fb44946ed794b0b7387
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using UnityEngine;
using System.Collections;
public class MouseMove : MonoBehaviour
{
[SerializeField]
float _sensitivity = 0.5f;
Vector3 _originalPos;
// Use this for initialization
void Start () {
_originalPos = transform.position;
}
// Update is called once per frame
void Update()
{
Vector3 mousePos = Input.mousePosition;
mousePos.x /= Screen.width;
mousePos.y /= Screen.height;
mousePos.x = mousePos.x - 0.5f;
mousePos.y = mousePos.y - 0.5f;
mousePos *= 2 * _sensitivity;
//mousePos.z = 8.0f;
//Debug.Log(mousePos);
transform.position = _originalPos + mousePos;
//transform.position = Camera.main.ViewportToWorldPoint(mousePos);
//Debug.Log(mousePos);
//transform.Translate(Input.GetAxis("Mouse X") * _speed, Input.GetAxis("Mouse Y") * _speed, 0);
}
}
fileFormatVersion: 2
guid: 930a90c776739104aad7a8f9c36ce2f9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using PigeonCoopToolkit.Effects.Trails;
using UnityEngine;
using System.Collections;
public class Orbiter : MonoBehaviour
{
public float TankCollisionOrbitRadius = 1.5f;
public float TankCollisionRotationSpeed = 1f;
public Trail Trail;
private TankController _tankBeingController;
private Vector3 _pos;
// Use this for initialization
void Start ()
{
_pos = Vector3.zero;
}
// Update is called once per frame
void Update ()
{
bool tankHit = false;
Ray r = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit h;
TankController tc = null;
if(Physics.Raycast(r,out h, 1000))
{
tc = h.collider.transform.root.GetComponent<TankController>();
if(tc == null)
{
_pos = h.point;
}
else
{
tankHit = true;
_pos = tc.transform.position;
}
}
if (tankHit == false)
{
Trail.Emit = false;
}
else
{
if(_tankBeingController != tc)
{
Trail.Emit = true;
transform.localScale = Vector3.one * TankCollisionOrbitRadius;
transform.Rotate(Vector3.up, TankCollisionRotationSpeed * Time.deltaTime);
transform.position = _pos;
}
if(Input.GetMouseButtonDown(0))
{
if (_tankBeingController != null)
_tankBeingController.InControl = false;
tc.InControl = true;
_tankBeingController = tc;
}
}
}
}
fileFormatVersion: 2
guid: 27d107ba4fa0da4438e888975290e68c
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using PigeonCoopToolkit.Utillities;
using UnityEngine;
public class PitchShifter : MonoBehaviour
{
public Range pitchRange;
public AudioSource src;
// Use this for initialization
void Start ()
{
src.pitch = Random.Range(pitchRange.Min, pitchRange.Max);
}
}
fileFormatVersion: 2
guid: 93da8b37534f24847bd75e949452eb6b
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using UnityEngine;
using System.Collections;
public class SwooshTest : MonoBehaviour
{
[SerializeField]
AnimationClip _animation;
AnimationState _animationState;
[SerializeField]
int _start = 0;
[SerializeField]
int _end = 0;
float _startN = 0.0f;
float _endN = 0.0f;
float _time = 0.0f;
float _prevTime = 0.0f;
float _prevAnimTime = 0.0f;
[SerializeField]
MeleeWeaponTrail _trail;
bool _firstFrame = true;
void Start()
{
float frames = _animation.frameRate * _animation.length;
_startN = _start/frames;
_endN = _end/frames;
_animationState = GetComponent<Animation>()[_animation.name];
_trail.Emit = false;
}
void Update()
{
_time += _animationState.normalizedTime - _prevAnimTime;
if (_time > 1.0f || _firstFrame)
{
if (!_firstFrame)
{
_time -= 1.0f;
}
_firstFrame = false;
}
if (_prevTime < _startN && _time >= _startN)
{
_trail.Emit = true;
}
else if (_prevTime < _endN && _time >= _endN)
{
_trail.Emit = false;
}
_prevTime = _time;
_prevAnimTime = _animationState.normalizedTime;
}
}
fileFormatVersion: 2
guid: 690fe3e3cbf02f84bbb3f17cb80abc08
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
using System.Collections;
public class TankAlwaysForward : MonoBehaviour {
public Material TrailMaterial;
public float Speed;
public float TrailSpeed;
void FixedUpdate()
{
transform.position = transform.position + transform.forward * Speed;
TrailMaterial.mainTextureOffset = new Vector2(TrailMaterial.mainTextureOffset.x + TrailSpeed,
TrailMaterial.mainTextureOffset.y);
}
}
fileFormatVersion: 2
guid: 636c1ed53dadc024295ea8ae5a532ecc
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using System.Collections.Generic;
using PigeonCoopToolkit.Effects.Trails;
using UnityEngine;
using System.Collections;
public class TankController : MonoBehaviour
{
public float TrailMaterialOffsetSpeed;
public float MoveSpeed, MoveFriction, MoveAcceleration;
public float RotateSpeed, RotateFriction, RotateAcceleration;
public Material TrailMaterial;
public Animator Animator;
public List<Trail> TankTrackTrails;
public TankWeaponController WeaponController;
private float _moveSpeed;
private float _rotateSpeed;
public bool InControl = false;
// LateUpdate is called once per frame
void Update ()
{
Animator.SetBool("InControl", InControl);
if(InControl)
{
WeaponController.enabled = true;
if (Input.GetKey(KeyCode.W))
{
Animator.SetBool("Forward", true);
Animator.SetBool("Backward", false);
_moveSpeed += MoveAcceleration * Time.deltaTime * 2;
if (_moveSpeed > MoveSpeed)
_moveSpeed = MoveSpeed;
}
else if (Input.GetKey(KeyCode.S))
{
Animator.SetBool("Backward", true);
Animator.SetBool("Forward", false);
_moveSpeed -= MoveAcceleration * Time.deltaTime * 2;
if (_moveSpeed < -MoveSpeed)
_moveSpeed = -MoveSpeed;
}
else
{
Animator.SetBool("Backward", false);
Animator.SetBool("Forward", false);
}
if (Input.GetKey(KeyCode.D))
{
_rotateSpeed += RotateAcceleration * Time.deltaTime * 2;
if (_rotateSpeed > RotateSpeed)
_rotateSpeed = RotateSpeed;
}
else if (Input.GetKey(KeyCode.A))
{
_rotateSpeed -= RotateAcceleration * Time.deltaTime * 2;
if (_rotateSpeed < -RotateSpeed)
_rotateSpeed = -RotateSpeed;
}
}
else
{
WeaponController.enabled = false;
}
if(Mathf.Abs(_moveSpeed) > 0)
{
TankTrackTrails.ForEach(trail => { trail.Emit = true; });
}
else
{
TankTrackTrails.ForEach(trail => { trail.Emit = false; });
}
transform.position += transform.forward * _moveSpeed * Time.deltaTime;
transform.RotateAround(transform.position, transform.up, _rotateSpeed);
TrailMaterial.mainTextureOffset = new Vector2(TrailMaterial.mainTextureOffset.x + Mathf.Sign(_moveSpeed) * Mathf.Lerp(0, TrailMaterialOffsetSpeed, Mathf.Abs(_moveSpeed / MoveSpeed) + Mathf.Abs(_rotateSpeed / RotateSpeed)),
TrailMaterial.mainTextureOffset.y);
_moveSpeed = Mathf.MoveTowards(_moveSpeed, 0, MoveFriction * Time.deltaTime);
_rotateSpeed = Mathf.MoveTowards(_rotateSpeed, 0, RotateFriction * Time.deltaTime);
}
}
fileFormatVersion: 2
guid: d1a03f0b23024354c8f8c11ec1c4c3fe
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using UnityEngine;
using System.Collections;
public class TankProjectile : MonoBehaviour
{
public float Speed;
public float Lifetime;
void Start()
{
Invoke("DestroySelf", Lifetime);
}
void DestroySelf()
{
Destroy(gameObject);
}
// LateUpdate is called once per frame
void Update ()
{
transform.position = transform.position + transform.forward*Speed*Time.deltaTime;
}
}
fileFormatVersion: 2
guid: 62f83b9786e225e4aaf0cc1fdd0b798c
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using UnityEngine;
using System.Collections;
using PigeonCoopToolkit.Effects.Trails;
public class TankTranslator : MonoBehaviour {
public float TranslateDistance;
public bool TrailTranslationEnabled = false;
// Update is called once per frame
void Update () {
Vector3 translationVector = Vector3.zero;
if(Input.GetKeyDown(KeyCode.A))
{
translationVector = transform.right * TranslateDistance;
}
else if(Input.GetKeyDown(KeyCode.D))
{
translationVector = -transform.right * TranslateDistance;
}
if(translationVector != Vector3.zero)
{
transform.Translate(translationVector);
if (TrailTranslationEnabled)
{
foreach (TrailRenderer_Base trail in GetComponentsInChildren<TrailRenderer_Base>())
{
trail.Translate(translationVector);
}
}
}
}
}
fileFormatVersion: 2
guid: d31ed198e4e5ac94a8f46b9fc9bd4268
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using UnityEngine;
using System.Collections;
public class TankWeaponController : MonoBehaviour
{
public TankProjectile ProjectilePrefab;
public Transform Nozzle;
private Animation _animation;
void Awake()
{
_animation = GetComponent<Animation>();
}
// Update is called once per frame
void Update () {
if (_animation.isPlaying == false && Input.GetKeyDown(KeyCode.Space))
{
_animation.Play();
Instantiate(ProjectilePrefab, Nozzle.position, Nozzle.rotation);
}
}
}
fileFormatVersion: 2
guid: bcd4e60a575556a47993ff2c32387948
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
fileFormatVersion: 2
guid: b94958cdd710d7045ba45c9c3799ef7d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: SwordHolder
serializedVersion: 2
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 3
m_Name: Base Layer
m_StateMachine: {fileID: 110700000}
m_Mask: {fileID: 0}
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_StateMachineMotionSetIndex: 0
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1101 &110100000
Transition:
serializedVersion: 2
m_ObjectHideFlags: 3
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name:
m_SrcState: {fileID: 0}
m_DstState: {fileID: 110200000}
m_TransitionDuration: .100000001
m_TransitionOffset: 0
m_Conditions:
- m_ConditionMode: 5
m_ConditionEvent:
m_EventTreshold: 0
m_ExitTime: .899999976
m_Atomic: 1
m_Solo: 0
m_Mute: 0
m_CanTransitionToSelf: 0
--- !u!1102 &110200000
State:
m_ObjectHideFlags: 3
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: SwordSwing
m_Speed: 1
m_CycleOffset: 0
m_Motions:
- {fileID: 7400000, guid: 1ff349405471a5a418ff10436d9df104, type: 2}
m_ParentStateMachine: {fileID: 110700000}
m_Position: {x: 36, y: 120, z: 0}
m_IKOnFeet: 0
m_Mirror: 0
m_Tag:
--- !u!1107 &110700000
StateMachine:
serializedVersion: 2
m_ObjectHideFlags: 3
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Base Layer
m_DefaultState: {fileID: 110200000}
m_States:
- {fileID: 110200000}
m_ChildStateMachine: []
m_ChildStateMachinePosition: []
m_OrderedTransitions:
data:
first: {fileID: 0}
second:
- {fileID: 110100000}
m_MotionSetCount: 1
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
fileFormatVersion: 2
guid: 388372b3a9051524a8e235e6d5156b37
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
NativeFormatImporter:
userData:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: SwordSwing
serializedVersion: 4
m_AnimationType: 2
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves:
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: {x: -0, y: -0, z: -0, w: -1}
inSlope: {x: .127192438, y: 3.07543445, z: -2.47604394, w: .130187273}
outSlope: {x: .127192438, y: 3.07543445, z: -2.47604394, w: .130187273}
tangentMode: 4368
- time: .0166666675
value: {x: .00211987412, y: .0512572415, z: -.0412674025, w: -.997830212}
inSlope: {x: .26036948, y: 3.00741577, z: -2.5744493, w: .263493061}
outSlope: {x: .26036948, y: 3.00741577, z: -2.5744493, w: .263493061}
tangentMode: 3782
- time: .0333333351
value: {x: .0086789839, y: .100247197, z: -.0858149827, w: -.991216898}
inSlope: {x: .532220721, y: 2.8677845, z: -2.73828268, w: .533791721}
outSlope: {x: .532220721, y: 2.8677845, z: -2.73828268, w: .533791721}
tangentMode: 0
- time: .0500000045
value: {x: .0198605675, y: .146850064, z: -.132543504, w: -.980037153}
inSlope: {x: .810836136, y: 2.72030687, z: -2.83551908, w: .809392333}
outSlope: {x: .810836136, y: 2.72030687, z: -2.83551908, w: .809392333}
tangentMode: 0
- time: .0666666701
value: {x: .0357068554, y: .190924093, z: -.180332288, w: -.964237154}
inSlope: {x: 1.08824158, y: 2.56423354, z: -2.86543798, w: 1.08544183}
outSlope: {x: 1.08824158, y: 2.56423354, z: -2.86543798, w: 1.08544183}
tangentMode: 607508836
- time: .0833333358
value: {x: .0561352856, y: .232324511, z: -.2280581, w: -.943855762}
inSlope: {x: 1.35740876, y: 2.39999032, z: -2.82846689, w: 1.35593009}
outSlope: {x: 1.35740876, y: 2.39999032, z: -2.82846689, w: 1.35593009}
tangentMode: -1
- time: .100000001
value: {x: .0809538141, y: .270923764, z: -.274614513, w: -.919039488}
inSlope: {x: 1.61220586, y: 2.2292037, z: -2.72620201, w: 1.61420357}
outSlope: {x: 1.61220586, y: 2.2292037, z: -2.72620201, w: 1.61420357}
tangentMode: -681252
- time: .116666667
value: {x: .109875478, y: .306631297, z: -.31893149, w: -.890048981}
inSlope: {x: 1.84734499, y: 2.05463791, z: -2.5613904, w: 1.85349202}
outSlope: {x: 1.84734499, y: 2.05463791, z: -2.5613904, w: 1.85349202}
tangentMode: -914086
- time: .13333334
value: {x: .142531991, y: .339411706, z: -.359994203, w: -.857256413}
inSlope: {x: 2.05832481, y: 1.88010311, z: -2.33785582, w: 2.0674448}
outSlope: {x: 2.05832481, y: 1.88010311, z: -2.33785582, w: 2.0674448}
tangentMode: 6302
- time: .150000006
value: {x: .178486317, y: .369301409, z: -.396860033, w: -.82113415}
inSlope: {x: 2.2413373, y: 1.71031427, z: -2.06035686, w: 2.25058818}
outSlope: {x: 2.2413373, y: 1.71031427, z: -2.06035686, w: 2.25058818}
tangentMode: 0
- time: .166666672
value: {x: .217243224, y: .396422178, z: -.428672761, w: -.782236814}
inSlope: {x: 2.39314413, y: 1.55072999, z: -1.73439515, w: 2.39876938}
outSlope: {x: 2.39314413, y: 1.55072999, z: -1.73439515, w: 2.39876938}
tangentMode: 0
- time: .183333337
value: {x: .258257776, y: .420992404, z: -.454673201, w: -.741175175}
inSlope: {x: 2.51091099, y: 1.40736771, z: -1.36597943, w: 2.50960016}
outSlope: {x: 2.51091099, y: 1.40736771, z: -1.36597943, w: 2.50960016}
tangentMode: 0
- time: .200000003
value: {x: .300940245, y: .44333443, z: -.474205405, w: -.698583484}
inSlope: {x: 2.59197164, y: 1.28656006, z: -.961390495, w: 2.58277607}
outSlope: {x: 2.59197164, y: 1.28656006, z: -.961390495, w: 2.58277607}
tangentMode: 607508836
- time: .216666669
value: {x: .344656825, y: .463877738, z: -.486719549, w: -.655082643}
inSlope: {x: 2.63357162, y: 1.19474006, z: -.526957572, w: 2.62038612}
outSlope: {x: 2.63357162, y: 1.19474006, z: -.526957572, w: 2.62038612}
tangentMode: -1
- time: .233333334
value: {x: .388725966, y: .483159095, z: -.491770655, w: -.611237288}
inSlope: {x: 2.63252306, y: 1.13811862, z: -.0688970163, w: 2.62715435}
outSlope: {x: 2.63252306, y: 1.13811862, z: -.0688970163, w: 2.62715435}
tangentMode: 4390
- time: .25
value: {x: .432407588, y: .501815021, z: -.489016116, w: -.567510843}
inSlope: {x: 2.5848279, y: 1.12229037, z: .406716496, w: 2.610636}
outSlope: {x: 2.5848279, y: 1.12229037, z: .406716496, w: 2.610636}
tangentMode: 0
- time: .266666681
value: {x: .474886924, y: .520568788, z: -.478213429, w: -.524216056}
inSlope: {x: 2.48527813, y: 1.15175033, z: .893822193, w: 2.58135843}
outSlope: {x: 2.48527813, y: 1.15175033, z: .893822193, w: 2.58135843}
tangentMode: 31432500
- time: .283333361
value: {x: .515250266, y: .54020673, z: -.459222019, w: -.481465489}
inSlope: {x: 2.32705498, y: 1.22922683, z: 1.38600087, w: 2.55286646}
outSlope: {x: 2.32705498, y: 1.22922683, z: 1.38600087, w: 2.55286646}
tangentMode: 0
- time: .300000042
value: {x: .552455485, y: .561543047, z: -.432013363, w: -.439120442}
inSlope: {x: 2.1014142, y: 1.35482192, z: 1.8758148, w: 2.54167342}
outSlope: {x: 2.1014142, y: 1.35482192, z: 1.8758148, w: 2.54167342}
tangentMode: 1
- time: .316666722
value: {x: .585297465, y: .585367501, z: -.396694809, w: -.39674297}
inSlope: {x: 1.79751492, y: 1.52487922, z: 2.35380983, w: 2.56700683}
outSlope: {x: 1.79751492, y: 1.52487922, z: 2.35380983, w: 2.56700683}
tangentMode: -1082130432
- time: .333333403
value: {x: .612372696, y: .612372398, z: -.353552967, w: -.353553474}
inSlope: {x: 1.49403214, y: 1.63836694, z: 2.76085281, w: 2.69203162}
outSlope: {x: 1.49403214, y: 1.63836694, z: 2.76085281, w: 2.69203162}
tangentMode: 1139783672
- time: .350000083
value: {x: .635098577, y: .63997978, z: -.304666311, w: -.307008505}
inSlope: {x: 1.29120541, y: 1.56804132, z: 3.05017161, w: 2.94378281}
outSlope: {x: 1.29120541, y: 1.56804132, z: 3.05017161, w: 2.94378281}
tangentMode: 3
- time: .366666764
value: {x: .655412912, y: .664640486, z: -.251880497, w: -.255427301}
inSlope: {x: 1.122913, y: 1.36470318, z: 3.27837372, w: 3.23583341}
outSlope: {x: 1.122913, y: 1.36470318, z: 3.27837372, w: 3.23583341}
tangentMode: 0
- time: .383333445
value: {x: .672529042, y: .685469925, z: -.195387095, w: -.199147299}
inSlope: {x: .907973528, y: 1.10927844, z: 3.49168062, w: 3.50359058}
outSlope: {x: .907973528, y: 1.10927844, z: 3.49168062, w: 3.50359058}
tangentMode: 1122856902
- time: .400000125
value: {x: .68567872, y: .701616466, z: -.135491043, w: -.138640851}
inSlope: {x: .648078382, y: .80457437, z: 3.68315411, w: 3.73896146}
outSlope: {x: .648078382, y: .80457437, z: 3.68315411, w: 3.73896146}
tangentMode: 1057505182
- time: .416666806
value: {x: .694131672, y: .712289095, z: -.0726151913, w: -.074515149}
inSlope: {x: .346135199, y: .455027431, z: 3.84570837, w: 3.93404341}
outSlope: {x: .346135199, y: .455027431, z: 3.84570837, w: 3.93404341}
tangentMode: 1090647685
- time: .433333486
value: {x: .69721657, y: .71678406, z: -.00730066141, w: -.00750596263}
inSlope: {x: .00632464886, y: .066659987, z: 3.97240233, w: 4.0814991}
outSlope: {x: .00632464886, y: .066659987, z: 3.97240233, w: 4.0814991}
tangentMode: 1041653725
- time: .450000167
value: {x: .694342494, y: .714511096, z: .0597983301, w: .0615349375}
inSlope: {x: -.365876257, y: -.353026688, z: 4.05673981, w: 4.17491245}
outSlope: {x: -.365876257, y: -.353026688, z: 4.05673981, w: 4.17491245}
tangentMode: -1046090355
- time: .466666847
value: {x: .685020685, y: .705016494, z: .127924114, w: .131657898}
inSlope: {x: -.763735116, y: -.795243919, z: 4.0929594, w: 4.20911503}
outSlope: {x: -.763735116, y: -.795243919, z: 4.0929594, w: 4.20911503}
tangentMode: 3
- time: .483333528
value: {x: .668884635, y: .688002944, z: .196230426, w: .201838881}
inSlope: {x: -1.17939436, y: -1.25016356, z: 4.07632589, w: 4.18046951}
outSlope: {x: -1.17939436, y: -1.25016356, z: 4.07632589, w: 4.18046951}
tangentMode: -1063509610
- time: .500000179
value: {x: .645707548, y: .663344383, z: .263801634, w: .271006882}
inSlope: {x: -1.60405016, y: -1.70724916, z: 4.00340509, w: 4.087111}
outSlope: {x: -1.60405016, y: -1.70724916, z: 4.00340509, w: 4.087111}
tangentMode: 4
- time: .51666683
value: {x: .615416348, y: .631094694, z: .329677135, w: .338075787}
inSlope: {x: -2.02819014, y: -2.15563989, z: 3.87230062, w: 3.92910624}
outSlope: {x: -2.02819014, y: -2.15563989, z: 3.87230062, w: 3.92910624}
tangentMode: -1070695912
- time: .53333348
value: {x: .578101277, y: .591489792, z: .392878205, w: .401976973}
inSlope: {x: -2.44190693, y: -2.58453798, z: 3.68281507, w: 3.70850801}
outSlope: {x: -2.44190693, y: -2.58453798, z: 3.68281507, w: 3.70850801}
tangentMode: 1
- time: .550000131
value: {x: .53401953, y: .544943511, z: .45243752, w: .461692601}
inSlope: {x: -2.83523631, y: -2.98363757, z: 3.43655777, w: 3.42933536}
outSlope: {x: -2.83523631, y: -2.98363757, z: 3.43655777, w: 3.42933536}
tangentMode: -1083975104
- time: .566666782
value: {x: .483593494, y: .4920353, z: .507430017, w: .516288042}
inSlope: {x: -3.19850779, y: -3.34350538, z: 3.13696814, w: 3.0974493}
outSlope: {x: -3.19850779, y: -3.34350538, z: 3.13696814, w: 3.0974493}
tangentMode: 1119417149
- time: .583333433
value: {x: .427402705, y: .433493435, z: .557003021, w: .56494081}
inSlope: {x: -3.52274704, y: -3.65595913, z: 2.78925323, w: 2.72035623}
outSlope: {x: -3.52274704, y: -3.65595913, z: 2.78925323, w: 2.72035623}
tangentMode: 1074754066
- time: .600000083
value: {x: .366168708, y: .370170116, z: .600405037, w: .606966496}
inSlope: {x: -3.80001163, y: -3.91438103, z: 2.40026474, w: 2.30692911}
outSlope: {x: -3.80001163, y: -3.91438103, z: 2.40026474, w: 2.30692911}
tangentMode: 1086522951
- time: .616666734
value: {x: .300735772, y: .303014189, z: .637011766, w: .641838372}
inSlope: {x: -4.02368116, y: -4.11391401, z: 1.97824192, w: 1.86702657}
outSlope: {x: -4.02368116, y: -4.11391401, z: 1.97824192, w: 1.86702657}
tangentMode: 1053489113
- time: .633333385
value: {x: .232046127, y: .233039781, z: .666346371, w: .669200659}
inSlope: {x: -4.18877888, y: -4.25166225, z: 1.5325495, w: 1.41115618}
outSlope: {x: -4.18877888, y: -4.25166225, z: 1.5325495, w: 1.41115618}
tangentMode: -1031215375
- time: .650000036
value: {x: .161109954, y: .161292255, z: .688096702, w: .688876867}
inSlope: {x: -4.29212475, y: -4.32671833, z: 1.07332623, w: .95004648}
outSlope: {x: -4.29212475, y: -4.32671833, z: 1.07332623, w: .95004648}
tangentMode: 3
- time: .666666687
value: {x: .088975437, y: .0888159797, z: .70212388, w: .700868845}
inSlope: {x: -4.33242416, y: -4.34010983, z: .611082911, w: .494238615}
outSlope: {x: -4.33242416, y: -4.34010983, z: .611082911, w: .494238615}
tangentMode: -1064925648
- time: .683333337
value: {x: .016695939, y: .0166220721, z: .708466113, w: .705351472}
inSlope: {x: -4.31033897, y: -4.29472446, z: .156346112, w: .0537407994}
outSlope: {x: -4.31033897, y: -4.29472446, z: .156346112, w: .0537407994}
tangentMode: 4
- time: .699999988
value: {x: -.0547024012, y: -.0543413609, z: .707335413, w: .702660203}
inSlope: {x: -4.22838593, y: -4.19508266, z: -.280754238, w: -.362327456}
outSlope: {x: -4.22838593, y: -4.19508266, z: -.280754238, w: -.362327456}
tangentMode: -1090066767
- time: .716666639
value: {x: -.124250114, y: -.12321388, z: .699107647, w: .693273902}
inSlope: {x: -4.09078884, y: -4.0470829, z: -.690833986, w: -.745976686}
outSlope: {x: -4.09078884, y: -4.0470829, z: -.690833986, w: -.745976686}
tangentMode: 1
- time: .73333329
value: {x: -.191061899, y: -.189243987, z: .684307635, w: .677794337}
inSlope: {x: -3.90325618, y: -3.85769796, z: -1.06556225, w: -1.09056222}
outSlope: {x: -3.90325618, y: -3.85769796, z: -1.06556225, w: -1.09056222}
tangentMode: -1088652788
- time: .74999994
value: {x: -.25435853, y: -.251803696, z: .663588941, w: .656921864}
inSlope: {x: -3.67269659, y: -3.63465023, z: -1.39791679, w: -1.39090371}
outSlope: {x: -3.67269659, y: -3.63465023, z: -1.39791679, w: -1.39090371}
tangentMode: 1098050689
- time: .766666591
value: {x: -.313484997, y: -.310398877, z: .637710452, w: .631430924}
inSlope: {x: -3.40687466, y: -3.38606143, z: -1.68234742, w: -1.64329803}
outSlope: {x: -3.40687466, y: -3.38606143, z: -1.68234742, w: -1.64329803}
tangentMode: 1075777228
- time: .783333242
value: {x: -.367920905, y: -.364672303, z: .607510746, w: .602145314}
inSlope: {x: -3.1140995, y: -3.12015486, z: -1.91489339, w: -1.84554219}
outSlope: {x: -3.1140995, y: -3.12015486, z: -1.91489339, w: -1.84554219}
tangentMode: -1080207195
- time: .799999893
value: {x: -.417288214, y: -.414403945, z: .573880732, w: .56991291}
inSlope: {x: -2.80283165, y: -2.8449297, z: -2.09318733, w: -1.99678493}
outSlope: {x: -2.80283165, y: -2.8449297, z: -2.09318733, w: -1.99678493}
tangentMode: 1057639165
- time: .816666543
value: {x: -.461348534, y: -.459503204, z: .537737906, w: .53558588}
inSlope: {x: -2.48133993, y: -2.56788397, z: -2.21640801, w: -2.09738922}
outSlope: {x: -2.48133993, y: -2.56788397, z: -2.21640801, w: -2.09738922}
tangentMode: -1021864919
- time: .833333194
value: {x: -.499999464, y: -.5, z: .500000536, w: .5}
inSlope: {x: -2.04615545, y: -2.43453169, z: -2.41055107, w: -2.05838728}
outSlope: {x: -2.04615545, y: -2.43453169, z: -2.41055107, w: -2.05838728}
tangentMode: 3
- time: .849999845
value: {x: -.529553652, y: -.540654182, z: .457386285, w: .466973037}
inSlope: {x: -1.37679887, y: -2.58472204, z: -2.75948238, w: -1.85664201}
outSlope: {x: -1.37679887, y: -2.58472204, z: -2.75948238, w: -1.85664201}
tangentMode: 1092999046
- time: .866666496
value: {x: -.545892715, y: -.586157322, z: .408017874, w: .438111991}
inSlope: {x: -.571908295, y: -2.85570598, z: -3.08220625, w: -1.67823207}
outSlope: {x: -.571908295, y: -2.85570598, z: -3.08220625, w: -1.67823207}
tangentMode: 2
- time: .883333147
value: {x: -.548617244, y: -.63584429, z: .354646176, w: .411032021}
inSlope: {x: .245043263, y: -3.06453419, z: -3.24774957, w: -1.63226795}
outSlope: {x: .245043263, y: -3.06453419, z: -3.24774957, w: -1.63226795}
tangentMode: 1129400407
- time: .899999797
value: {x: -.537724614, y: -.688308358, z: .299759656, w: .383703113}
inSlope: {x: 1.04763794, y: -3.17370009, z: -3.27038288, w: -1.6921947}
outSlope: {x: 1.04763794, y: -3.17370009, z: -3.27038288, w: -1.6921947}
tangentMode: 3
- time: .916666448
value: {x: -.513696015, y: -.74163419, z: .245633513, w: .354625583}
inSlope: {x: 1.80461347, y: -3.16049623, z: -3.16345835, w: -1.82355785}
outSlope: {x: 1.80461347, y: -3.16049623, z: -3.16345835, w: -1.82355785}
tangentMode: -1066562258
- time: .933333099
value: {x: -.477570891, y: -.793658137, z: .194311142, w: .322917908}
inSlope: {x: 2.48167157, y: -3.01806545, z: -2.94287467, w: -1.9889636}
outSlope: {x: 2.48167157, y: -3.01806545, z: -2.94287467, w: -1.9889636}
tangentMode: 4
- time: .94999975
value: {x: -.430973709, y: -.84223628, z: .147537783, w: .288326859}
inSlope: {x: 3.04470634, y: -2.75508904, z: -2.62913799, w: -2.15259552}
outSlope: {x: 3.04470634, y: -2.75508904, z: -2.62913799, w: -2.15259552}
tangentMode: 1079103712
- time: .9666664
value: {x: -.376080781, y: -.885494351, z: .106673293, w: .251164794}
inSlope: {x: 3.46348357, y: -2.39392376, z: -2.2477293, w: -2.28403997}
outSlope: {x: 3.46348357, y: -2.39392376, z: -2.2477293, w: -2.28403997}
tangentMode: 1
- time: .983333051
value: {x: -.315524369, y: -.922033668, z: .0726135448, w: .212192267}
inSlope: {x: 3.71496153, y: -1.96729493, z: -1.8279618, w: -2.36113429}
outSlope: {x: 3.71496153, y: -1.96729493, z: -1.8279618, w: -2.36113429}
tangentMode: -1102320315
- time: .999999702
value: {x: -.252248853, y: -.951070786, z: .0457412899, w: .172460392}
inSlope: {x: 3.78547263, y: -1.51391125, z: -1.40073705, w: -2.37154293}
outSlope: {x: 3.78547263, y: -1.51391125, z: -1.40073705, w: -2.37154293}
tangentMode: -1033256070
- time: 1.01666641
value: {x: -.189341843, y: -.972497404, z: .0259222817, w: .133140773}
inSlope: {x: 3.67133904, y: -1.07348323, z: -.995695829, w: -2.31261587}
outSlope: {x: 3.67133904, y: -1.07348323, z: -.995695829, w: -2.31261587}
tangentMode: 1051801762
- time: 1.03333306
value: {x: -.129870772, y: -.9868536, z: .0125513887, w: .0953731313}
inSlope: {x: 3.37780857, y: -.681812823, z: -.638537824, w: -2.19012594}
outSlope: {x: 3.37780857, y: -.681812823, z: -.638537824, w: -2.19012594}
tangentMode: 1087842100
- time: 1.04999971
value: {x: -.0767483339, y: -.995224476, z: .00463770796, w: .060136646}
inSlope: {x: 2.91658115, y: -.366463423, z: -.348907828, w: -2.01578403}
outSlope: {x: 2.91658115, y: -.366463423, z: -.348907828, w: -2.01578403}
tangentMode: 1060601641
- time: 1.06666636
value: {x: -.0326514915, y: -.999069035, z: .000921139494, w: .0281803943}
inSlope: {x: 2.30244327, y: -.143265858, z: -.139127374, w: -1.80401564}
outSlope: {x: 2.30244327, y: -.143265858, z: -.139127374, w: -1.80401564}
tangentMode: -1038199589
- time: 1.08333302
value: {x: -2.95447393e-07, y: -1, z: 1.3315919e-07, w: 2.84909811e-06}
inSlope: {x: 1.65651727, y: -.0126475208, z: -.0123482961, w: -1.52230191}
outSlope: {x: 1.65651727, y: -.0126475208, z: -.0123482961, w: -1.52230191}
tangentMode: 3
- time: 1.09999967
value: {x: .0225656964, y: -.999490619, z: .000509530015, w: -.0225629546}
inSlope: {x: 1.15292561, y: .0443691462, z: .0443688296, w: -1.15291381}
outSlope: {x: 1.15292561, y: .0443691462, z: .0443688296, w: -1.15291381}
tangentMode: -1051399717
- time: 1.11666632
value: {x: .0384305194, y: -.99852103, z: .00147909275, w: -.0384275727}
inSlope: {x: .775343895, y: .0551873967, z: .0551864207, w: -.775349259}
outSlope: {x: .775343895, y: .0551873967, z: .0551864207, w: -.775349259}
tangentMode: 4
- time: 1.13333297
value: {x: .0484104678, y: -.997651041, z: .00234907563, w: -.0484079048}
inSlope: {x: .446896374, y: .0411844626, z: .0411838219, w: -.446913004}
outSlope: {x: .446896374, y: .0411844626, z: .0411838219, w: -.446913004}
tangentMode: 1082290499
- time: 1.14999962
value: {x: .0533270501, y: -.997148216, z: .00285188551, w: -.0533246584}
inSlope: {x: .167420521, y: .0172358919, z: .0172349196, w: -.167428449}
outSlope: {x: .167420521, y: .0172358919, z: .0172349196, w: -.167428449}
tangentMode: 1
- time: 1.16666627
value: {x: .0539911464, y: -.997076511, z: .00292357244, w: -.0539888479}
inSlope: {x: -.0637572855, y: -.00670195278, z: -.00670210645, w: .0637786388}
outSlope: {x: -.0637572855, y: -.00670195278, z: -.00670210645, w: .0637786388}
tangentMode: 1049280874
- time: 1.18333292
value: {x: .0512018092, y: -.997371614, z: .00262848218, w: -.051198706}
inSlope: {x: -.247195974, y: -.0247800574, z: -.0247802828, w: .247209609}
outSlope: {x: -.247195974, y: -.0247800574, z: -.0247802828, w: .247209609}
tangentMode: -1026494134
- time: 1.19999957
value: {x: .0457512885, y: -.997902513, z: .00209756382, w: -.0457485355}
inSlope: {x: -.383122414, y: -.0344807208, z: -.034480527, w: .38312006}
outSlope: {x: -.383122414, y: -.0344807208, z: -.034480527, w: .38312006}
tangentMode: -1071888332
- time: 1.21666622
value: {x: .0384310745, y: -.99852097, z: .00147913245, w: -.0384280495}
inSlope: {x: -.471460044, y: -.0358379222, z: -.0358367115, w: .471462071}
outSlope: {x: -.471460044, y: -.0358379222, z: -.0358367115, w: .471462071}
tangentMode: -1061469963
- time: 1.23333287
value: {x: .0300359689, y: -.999097109, z: .000903007865, w: -.0300331488}
inSlope: {x: -.511969686, y: -.0306737721, z: -.0306715146, w: .51196748}
outSlope: {x: -.511969686, y: -.0306737721, z: -.0306715146, w: .51196748}
tangentMode: 1057718635
- time: 1.24999952
value: {x: .0213654358, y: -.999543428, z: .000456749636, w: -.0213624835}
inSlope: {x: -.504403293, y: -.0218421444, z: -.0218417812, w: .5044173}
outSlope: {x: -.504403293, y: -.0218421444, z: -.0218417812, w: .5044173}
tangentMode: 1117510301
- time: 1.26666617
value: {x: .0132225426, y: -.99982518, z: .000174949178, w: -.013219256}
inSlope: {x: -.448611557, y: -.0124633433, z: -.0124657694, w: .448604822}
outSlope: {x: -.448611557, y: -.0124633433, z: -.0124657694, w: .448604822}
tangentMode: 3
- time: 1.28333282
value: {x: .00641173078, y: -.999958873, z: 4.12243971e-05, w: -.0064090034}
inSlope: {x: -.34457162, y: -.00515521038, z: -.00515417289, w: .344564348}
outSlope: {x: -.34457162, y: -.00515521038, z: -.00515417289, w: .344564348}
tangentMode: -1054537614
- time: 1.29999948
value: {x: .00173683267, y: -.99999702, z: 3.14358408e-06, w: -.00173378817}
inSlope: {x: -.192342252, y: -.00123381405, z: -.00123273511, w: .192353889}
outSlope: {x: -.192342252, y: -.00123381405, z: -.00123273511, w: .192353889}
tangentMode: 4
- time: 1.31666672
value: {x: 2.66316476e-07, y: -1, z: 1.331573e-07, w: 2.84909811e-06}
inSlope: {x: -.10419035, y: -.000178807706, z: -.000180619318, w: .104194611}
outSlope: {x: -.10419035, y: -.000178807706, z: -.000180619318, w: .104194611}
tangentMode: 1075420656
m_PreInfinity: 2
m_PostInfinity: 2
path:
m_CompressedRotationCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves:
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .333333343
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .833333313
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .949999988
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
m_PreInfinity: 2
m_PostInfinity: 2
attribute: Emit
path: Trail
classID: 114
script: {fileID: 11500000, guid: 5f742ccbd25717e438dd6fdea4d66bad, type: 3}
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .333333343
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .833333313
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .949999988
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
m_PreInfinity: 2
m_PostInfinity: 2
attribute: Emit
path: Trail
classID: 114
script: {fileID: 11500000, guid: 98335f20237e3de42a9f0b6415312e23, type: 3}
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .333333343
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .949999988
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
m_PreInfinity: 2
m_PostInfinity: 2
attribute: Emit
path: Trail
classID: 114
script: {fileID: 11500000, guid: 62cd7e0b3a08cf84e82658d9a3eaeb32, type: 3}
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- path: 0
attribute: 2
script: {fileID: 0}
classID: 4
customType: 0
isPPtrCurve: 0
- path: 1940499083
attribute: 785795755
script: {fileID: 11500000, guid: 5f742ccbd25717e438dd6fdea4d66bad, type: 3}
classID: 114
customType: 0
isPPtrCurve: 0
- path: 1940499083
attribute: 785795755
script: {fileID: 11500000, guid: 98335f20237e3de42a9f0b6415312e23, type: 3}
classID: 114
customType: 0
isPPtrCurve: 0
- path: 1940499083
attribute: 785795755
script: {fileID: 11500000, guid: 62cd7e0b3a08cf84e82658d9a3eaeb32, type: 3}
classID: 114
customType: 0
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_StartTime: 0
m_StopTime: 1.31666672
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .333333343
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .833333313
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .949999988
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
m_PreInfinity: 2
m_PostInfinity: 2
attribute: Emit
path: Trail
classID: 114
script: {fileID: 11500000, guid: 5f742ccbd25717e438dd6fdea4d66bad, type: 3}
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: -0
inSlope: .127192438
outSlope: .127192438
tangentMode: 0
- time: .0166666675
value: .00211987412
inSlope: .26036948
outSlope: .26036948
tangentMode: 0
- time: .0333333351
value: .0086789839
inSlope: .532220721
outSlope: .532220721
tangentMode: 0
- time: .0500000045
value: .0198605675
inSlope: .810836136
outSlope: .810836136
tangentMode: 0
- time: .0666666701
value: .0357068554
inSlope: 1.08824158
outSlope: 1.08824158
tangentMode: 0
- time: .0833333358
value: .0561352856
inSlope: 1.35740876
outSlope: 1.35740876
tangentMode: 0
- time: .100000001
value: .0809538141
inSlope: 1.61220586
outSlope: 1.61220586
tangentMode: 0
- time: .116666667
value: .109875478
inSlope: 1.84734499
outSlope: 1.84734499
tangentMode: 0
- time: .13333334
value: .142531991
inSlope: 2.05832481
outSlope: 2.05832481
tangentMode: 0
- time: .150000006
value: .178486317
inSlope: 2.2413373
outSlope: 2.2413373
tangentMode: 0
- time: .166666672
value: .217243224
inSlope: 2.39314413
outSlope: 2.39314413
tangentMode: 0
- time: .183333337
value: .258257776
inSlope: 2.51091099
outSlope: 2.51091099
tangentMode: 0
- time: .200000003
value: .300940245
inSlope: 2.59197164
outSlope: 2.59197164
tangentMode: 0
- time: .216666669
value: .344656825
inSlope: 2.63357162
outSlope: 2.63357162
tangentMode: 0
- time: .233333334
value: .388725966
inSlope: 2.63252306
outSlope: 2.63252306
tangentMode: 0
- time: .25
value: .432407588
inSlope: 2.5848279
outSlope: 2.5848279
tangentMode: 0
- time: .266666681
value: .474886924
inSlope: 2.48527813
outSlope: 2.48527813
tangentMode: 0
- time: .283333361
value: .515250266
inSlope: 2.32705498
outSlope: 2.32705498
tangentMode: 0
- time: .300000042
value: .552455485
inSlope: 2.1014142
outSlope: 2.1014142
tangentMode: 0
- time: .316666722
value: .585297465
inSlope: 1.79751492
outSlope: 1.79751492
tangentMode: 0
- time: .333333403
value: .612372696
inSlope: 1.49403214
outSlope: 1.49403214
tangentMode: 0
- time: .350000083
value: .635098577
inSlope: 1.29120541
outSlope: 1.29120541
tangentMode: 0
- time: .366666764
value: .655412912
inSlope: 1.122913
outSlope: 1.122913
tangentMode: 0
- time: .383333445
value: .672529042
inSlope: .907973528
outSlope: .907973528
tangentMode: 0
- time: .400000125
value: .68567872
inSlope: .648078382
outSlope: .648078382
tangentMode: 0
- time: .416666806
value: .694131672
inSlope: .346135199
outSlope: .346135199
tangentMode: 0
- time: .433333486
value: .69721657
inSlope: .00632464886
outSlope: .00632464886
tangentMode: 0
- time: .450000167
value: .694342494
inSlope: -.365876257
outSlope: -.365876257
tangentMode: 0
- time: .466666847
value: .685020685
inSlope: -.763735116
outSlope: -.763735116
tangentMode: 0
- time: .483333528
value: .668884635
inSlope: -1.17939436
outSlope: -1.17939436
tangentMode: 0
- time: .500000179
value: .645707548
inSlope: -1.60405016
outSlope: -1.60405016
tangentMode: 0
- time: .51666683
value: .615416348
inSlope: -2.02819014
outSlope: -2.02819014
tangentMode: 0
- time: .53333348
value: .578101277
inSlope: -2.44190693
outSlope: -2.44190693
tangentMode: 0
- time: .550000131
value: .53401953
inSlope: -2.83523631
outSlope: -2.83523631
tangentMode: 0
- time: .566666782
value: .483593494
inSlope: -3.19850779
outSlope: -3.19850779
tangentMode: 0
- time: .583333433
value: .427402705
inSlope: -3.52274704
outSlope: -3.52274704
tangentMode: 0
- time: .600000083
value: .366168708
inSlope: -3.80001163
outSlope: -3.80001163
tangentMode: 0
- time: .616666734
value: .300735772
inSlope: -4.02368116
outSlope: -4.02368116
tangentMode: 0
- time: .633333385
value: .232046127
inSlope: -4.18877888
outSlope: -4.18877888
tangentMode: 0
- time: .650000036
value: .161109954
inSlope: -4.29212475
outSlope: -4.29212475
tangentMode: 0
- time: .666666687
value: .088975437
inSlope: -4.33242416
outSlope: -4.33242416
tangentMode: 0
- time: .683333337
value: .016695939
inSlope: -4.31033897
outSlope: -4.31033897
tangentMode: 0
- time: .699999988
value: -.0547024012
inSlope: -4.22838593
outSlope: -4.22838593
tangentMode: 0
- time: .716666639
value: -.124250114
inSlope: -4.09078884
outSlope: -4.09078884
tangentMode: 0
- time: .73333329
value: -.191061899
inSlope: -3.90325618
outSlope: -3.90325618
tangentMode: 0
- time: .74999994
value: -.25435853
inSlope: -3.67269659
outSlope: -3.67269659
tangentMode: 0
- time: .766666591
value: -.313484997
inSlope: -3.40687466
outSlope: -3.40687466
tangentMode: 0
- time: .783333242
value: -.367920905
inSlope: -3.1140995
outSlope: -3.1140995
tangentMode: 0
- time: .799999893
value: -.417288214
inSlope: -2.80283165
outSlope: -2.80283165
tangentMode: 0
- time: .816666543
value: -.461348534
inSlope: -2.48133993
outSlope: -2.48133993
tangentMode: 0
- time: .833333194
value: -.499999464
inSlope: -2.04615545
outSlope: -2.04615545
tangentMode: 0
- time: .849999845
value: -.529553652
inSlope: -1.37679887
outSlope: -1.37679887
tangentMode: 0
- time: .866666496
value: -.545892715
inSlope: -.571908295
outSlope: -.571908295
tangentMode: 0
- time: .883333147
value: -.548617244
inSlope: .245043263
outSlope: .245043263
tangentMode: 0
- time: .899999797
value: -.537724614
inSlope: 1.04763794
outSlope: 1.04763794
tangentMode: 0
- time: .916666448
value: -.513696015
inSlope: 1.80461347
outSlope: 1.80461347
tangentMode: 0
- time: .933333099
value: -.477570891
inSlope: 2.48167157
outSlope: 2.48167157
tangentMode: 0
- time: .94999975
value: -.430973709
inSlope: 3.04470634
outSlope: 3.04470634
tangentMode: 0
- time: .9666664
value: -.376080781
inSlope: 3.46348357
outSlope: 3.46348357
tangentMode: 0
- time: .983333051
value: -.315524369
inSlope: 3.71496153
outSlope: 3.71496153
tangentMode: 0
- time: .999999702
value: -.252248853
inSlope: 3.78547263
outSlope: 3.78547263
tangentMode: 0
- time: 1.01666641
value: -.189341843
inSlope: 3.67133904
outSlope: 3.67133904
tangentMode: 0
- time: 1.03333306
value: -.129870772
inSlope: 3.37780857
outSlope: 3.37780857
tangentMode: 0
- time: 1.04999971
value: -.0767483339
inSlope: 2.91658115
outSlope: 2.91658115
tangentMode: 0
- time: 1.06666636
value: -.0326514915
inSlope: 2.30244327
outSlope: 2.30244327
tangentMode: 0
- time: 1.08333302
value: -2.95447393e-07
inSlope: 1.65651727
outSlope: 1.65651727
tangentMode: 0
- time: 1.09999967
value: .0225656964
inSlope: 1.15292561
outSlope: 1.15292561
tangentMode: 0
- time: 1.11666632
value: .0384305194
inSlope: .775343895
outSlope: .775343895
tangentMode: 0
- time: 1.13333297
value: .0484104678
inSlope: .446896374
outSlope: .446896374
tangentMode: 0
- time: 1.14999962
value: .0533270501
inSlope: .167420521
outSlope: .167420521
tangentMode: 0
- time: 1.16666627
value: .0539911464
inSlope: -.0637572855
outSlope: -.0637572855
tangentMode: 0
- time: 1.18333292
value: .0512018092
inSlope: -.247195974
outSlope: -.247195974
tangentMode: 0
- time: 1.19999957
value: .0457512885
inSlope: -.383122414
outSlope: -.383122414
tangentMode: 0
- time: 1.21666622
value: .0384310745
inSlope: -.471460044
outSlope: -.471460044
tangentMode: 0
- time: 1.23333287
value: .0300359689
inSlope: -.511969686
outSlope: -.511969686
tangentMode: 0
- time: 1.24999952
value: .0213654358
inSlope: -.504403293
outSlope: -.504403293
tangentMode: 0
- time: 1.26666617
value: .0132225426
inSlope: -.448611557
outSlope: -.448611557
tangentMode: 0
- time: 1.28333282
value: .00641173078
inSlope: -.34457162
outSlope: -.34457162
tangentMode: 0
- time: 1.29999948
value: .00173683267
inSlope: -.192342252
outSlope: -.192342252
tangentMode: 0
- time: 1.31666672
value: 2.66316476e-07
inSlope: -.10419035
outSlope: -.10419035
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
attribute: m_LocalRotation.x
path:
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: -0
inSlope: 3.07543445
outSlope: 3.07543445
tangentMode: 0
- time: .0166666675
value: .0512572415
inSlope: 3.00741577
outSlope: 3.00741577
tangentMode: 0
- time: .0333333351
value: .100247197
inSlope: 2.8677845
outSlope: 2.8677845
tangentMode: 0
- time: .0500000045
value: .146850064
inSlope: 2.72030687
outSlope: 2.72030687
tangentMode: 0
- time: .0666666701
value: .190924093
inSlope: 2.56423354
outSlope: 2.56423354
tangentMode: 0
- time: .0833333358
value: .232324511
inSlope: 2.39999032
outSlope: 2.39999032
tangentMode: 0
- time: .100000001
value: .270923764
inSlope: 2.2292037
outSlope: 2.2292037
tangentMode: 0
- time: .116666667
value: .306631297
inSlope: 2.05463791
outSlope: 2.05463791
tangentMode: 0
- time: .13333334
value: .339411706
inSlope: 1.88010311
outSlope: 1.88010311
tangentMode: 0
- time: .150000006
value: .369301409
inSlope: 1.71031427
outSlope: 1.71031427
tangentMode: 0
- time: .166666672
value: .396422178
inSlope: 1.55072999
outSlope: 1.55072999
tangentMode: 0
- time: .183333337
value: .420992404
inSlope: 1.40736771
outSlope: 1.40736771
tangentMode: 0
- time: .200000003
value: .44333443
inSlope: 1.28656006
outSlope: 1.28656006
tangentMode: 0
- time: .216666669
value: .463877738
inSlope: 1.19474006
outSlope: 1.19474006
tangentMode: 0
- time: .233333334
value: .483159095
inSlope: 1.13811862
outSlope: 1.13811862
tangentMode: 0
- time: .25
value: .501815021
inSlope: 1.12229037
outSlope: 1.12229037
tangentMode: 0
- time: .266666681
value: .520568788
inSlope: 1.15175033
outSlope: 1.15175033
tangentMode: 0
- time: .283333361
value: .54020673
inSlope: 1.22922683
outSlope: 1.22922683
tangentMode: 0
- time: .300000042
value: .561543047
inSlope: 1.35482192
outSlope: 1.35482192
tangentMode: 0
- time: .316666722
value: .585367501
inSlope: 1.52487922
outSlope: 1.52487922
tangentMode: 0
- time: .333333403
value: .612372398
inSlope: 1.63836694
outSlope: 1.63836694
tangentMode: 0
- time: .350000083
value: .63997978
inSlope: 1.56804132
outSlope: 1.56804132
tangentMode: 0
- time: .366666764
value: .664640486
inSlope: 1.36470318
outSlope: 1.36470318
tangentMode: 0
- time: .383333445
value: .685469925
inSlope: 1.10927844
outSlope: 1.10927844
tangentMode: 0
- time: .400000125
value: .701616466
inSlope: .80457437
outSlope: .80457437
tangentMode: 0
- time: .416666806
value: .712289095
inSlope: .455027431
outSlope: .455027431
tangentMode: 0
- time: .433333486
value: .71678406
inSlope: .066659987
outSlope: .066659987
tangentMode: 0
- time: .450000167
value: .714511096
inSlope: -.353026688
outSlope: -.353026688
tangentMode: 0
- time: .466666847
value: .705016494
inSlope: -.795243919
outSlope: -.795243919
tangentMode: 0
- time: .483333528
value: .688002944
inSlope: -1.25016356
outSlope: -1.25016356
tangentMode: 0
- time: .500000179
value: .663344383
inSlope: -1.70724916
outSlope: -1.70724916
tangentMode: 0
- time: .51666683
value: .631094694
inSlope: -2.15563989
outSlope: -2.15563989
tangentMode: 0
- time: .53333348
value: .591489792
inSlope: -2.58453798
outSlope: -2.58453798
tangentMode: 0
- time: .550000131
value: .544943511
inSlope: -2.98363757
outSlope: -2.98363757
tangentMode: 0
- time: .566666782
value: .4920353
inSlope: -3.34350538
outSlope: -3.34350538
tangentMode: 0
- time: .583333433
value: .433493435
inSlope: -3.65595913
outSlope: -3.65595913
tangentMode: 0
- time: .600000083
value: .370170116
inSlope: -3.91438103
outSlope: -3.91438103
tangentMode: 0
- time: .616666734
value: .303014189
inSlope: -4.11391401
outSlope: -4.11391401
tangentMode: 0
- time: .633333385
value: .233039781
inSlope: -4.25166225
outSlope: -4.25166225
tangentMode: 0
- time: .650000036
value: .161292255
inSlope: -4.32671833
outSlope: -4.32671833
tangentMode: 0
- time: .666666687
value: .0888159797
inSlope: -4.34010983
outSlope: -4.34010983
tangentMode: 0
- time: .683333337
value: .0166220721
inSlope: -4.29472446
outSlope: -4.29472446
tangentMode: 0
- time: .699999988
value: -.0543413609
inSlope: -4.19508266
outSlope: -4.19508266
tangentMode: 0
- time: .716666639
value: -.12321388
inSlope: -4.0470829
outSlope: -4.0470829
tangentMode: 0
- time: .73333329
value: -.189243987
inSlope: -3.85769796
outSlope: -3.85769796
tangentMode: 0
- time: .74999994
value: -.251803696
inSlope: -3.63465023
outSlope: -3.63465023
tangentMode: 0
- time: .766666591
value: -.310398877
inSlope: -3.38606143
outSlope: -3.38606143
tangentMode: 0
- time: .783333242
value: -.364672303
inSlope: -3.12015486
outSlope: -3.12015486
tangentMode: 0
- time: .799999893
value: -.414403945
inSlope: -2.8449297
outSlope: -2.8449297
tangentMode: 0
- time: .816666543
value: -.459503204
inSlope: -2.56788397
outSlope: -2.56788397
tangentMode: 0
- time: .833333194
value: -.5
inSlope: -2.43453169
outSlope: -2.43453169
tangentMode: 0
- time: .849999845
value: -.540654182
inSlope: -2.58472204
outSlope: -2.58472204
tangentMode: 0
- time: .866666496
value: -.586157322
inSlope: -2.85570598
outSlope: -2.85570598
tangentMode: 0
- time: .883333147
value: -.63584429
inSlope: -3.06453419
outSlope: -3.06453419
tangentMode: 0
- time: .899999797
value: -.688308358
inSlope: -3.17370009
outSlope: -3.17370009
tangentMode: 0
- time: .916666448
value: -.74163419
inSlope: -3.16049623
outSlope: -3.16049623
tangentMode: 0
- time: .933333099
value: -.793658137
inSlope: -3.01806545
outSlope: -3.01806545
tangentMode: 0
- time: .94999975
value: -.84223628
inSlope: -2.75508904
outSlope: -2.75508904
tangentMode: 0
- time: .9666664
value: -.885494351
inSlope: -2.39392376
outSlope: -2.39392376
tangentMode: 0
- time: .983333051
value: -.922033668
inSlope: -1.96729493
outSlope: -1.96729493
tangentMode: 0
- time: .999999702
value: -.951070786
inSlope: -1.51391125
outSlope: -1.51391125
tangentMode: 0
- time: 1.01666641
value: -.972497404
inSlope: -1.07348323
outSlope: -1.07348323
tangentMode: 0
- time: 1.03333306
value: -.9868536
inSlope: -.681812823
outSlope: -.681812823
tangentMode: 0
- time: 1.04999971
value: -.995224476
inSlope: -.366463423
outSlope: -.366463423
tangentMode: 0
- time: 1.06666636
value: -.999069035
inSlope: -.143265858
outSlope: -.143265858
tangentMode: 0
- time: 1.08333302
value: -1
inSlope: -.0126475208
outSlope: -.0126475208
tangentMode: 0
- time: 1.09999967
value: -.999490619
inSlope: .0443691462
outSlope: .0443691462
tangentMode: 0
- time: 1.11666632
value: -.99852103
inSlope: .0551873967
outSlope: .0551873967
tangentMode: 0
- time: 1.13333297
value: -.997651041
inSlope: .0411844626
outSlope: .0411844626
tangentMode: 0
- time: 1.14999962
value: -.997148216
inSlope: .0172358919
outSlope: .0172358919
tangentMode: 0
- time: 1.16666627
value: -.997076511
inSlope: -.00670195278
outSlope: -.00670195278
tangentMode: 0
- time: 1.18333292
value: -.997371614
inSlope: -.0247800574
outSlope: -.0247800574
tangentMode: 0
- time: 1.19999957
value: -.997902513
inSlope: -.0344807208
outSlope: -.0344807208
tangentMode: 0
- time: 1.21666622
value: -.99852097
inSlope: -.0358379222
outSlope: -.0358379222
tangentMode: 0
- time: 1.23333287
value: -.999097109
inSlope: -.0306737721
outSlope: -.0306737721
tangentMode: 0
- time: 1.24999952
value: -.999543428
inSlope: -.0218421444
outSlope: -.0218421444
tangentMode: 0
- time: 1.26666617
value: -.99982518
inSlope: -.0124633433
outSlope: -.0124633433
tangentMode: 0
- time: 1.28333282
value: -.999958873
inSlope: -.00515521038
outSlope: -.00515521038
tangentMode: 0
- time: 1.29999948
value: -.99999702
inSlope: -.00123381405
outSlope: -.00123381405
tangentMode: 0
- time: 1.31666672
value: -1
inSlope: -.000178807706
outSlope: -.000178807706
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
attribute: m_LocalRotation.y
path:
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: -0
inSlope: -2.47604394
outSlope: -2.47604394
tangentMode: 0
- time: .0166666675
value: -.0412674025
inSlope: -2.5744493
outSlope: -2.5744493
tangentMode: 0
- time: .0333333351
value: -.0858149827
inSlope: -2.73828268
outSlope: -2.73828268
tangentMode: 0
- time: .0500000045
value: -.132543504
inSlope: -2.83551908
outSlope: -2.83551908
tangentMode: 0
- time: .0666666701
value: -.180332288
inSlope: -2.86543798
outSlope: -2.86543798
tangentMode: 0
- time: .0833333358
value: -.2280581
inSlope: -2.82846689
outSlope: -2.82846689
tangentMode: 0
- time: .100000001
value: -.274614513
inSlope: -2.72620201
outSlope: -2.72620201
tangentMode: 0
- time: .116666667
value: -.31893149
inSlope: -2.5613904
outSlope: -2.5613904
tangentMode: 0
- time: .13333334
value: -.359994203
inSlope: -2.33785582
outSlope: -2.33785582
tangentMode: 0
- time: .150000006
value: -.396860033
inSlope: -2.06035686
outSlope: -2.06035686
tangentMode: 0
- time: .166666672
value: -.428672761
inSlope: -1.73439515
outSlope: -1.73439515
tangentMode: 0
- time: .183333337
value: -.454673201
inSlope: -1.36597943
outSlope: -1.36597943
tangentMode: 0
- time: .200000003
value: -.474205405
inSlope: -.961390495
outSlope: -.961390495
tangentMode: 0
- time: .216666669
value: -.486719549
inSlope: -.526957572
outSlope: -.526957572
tangentMode: 0
- time: .233333334
value: -.491770655
inSlope: -.0688970163
outSlope: -.0688970163
tangentMode: 0
- time: .25
value: -.489016116
inSlope: .406716496
outSlope: .406716496
tangentMode: 0
- time: .266666681
value: -.478213429
inSlope: .893822193
outSlope: .893822193
tangentMode: 0
- time: .283333361
value: -.459222019
inSlope: 1.38600087
outSlope: 1.38600087
tangentMode: 0
- time: .300000042
value: -.432013363
inSlope: 1.8758148
outSlope: 1.8758148
tangentMode: 0
- time: .316666722
value: -.396694809
inSlope: 2.35380983
outSlope: 2.35380983
tangentMode: 0
- time: .333333403
value: -.353552967
inSlope: 2.76085281
outSlope: 2.76085281
tangentMode: 0
- time: .350000083
value: -.304666311
inSlope: 3.05017161
outSlope: 3.05017161
tangentMode: 0
- time: .366666764
value: -.251880497
inSlope: 3.27837372
outSlope: 3.27837372
tangentMode: 0
- time: .383333445
value: -.195387095
inSlope: 3.49168062
outSlope: 3.49168062
tangentMode: 0
- time: .400000125
value: -.135491043
inSlope: 3.68315411
outSlope: 3.68315411
tangentMode: 0
- time: .416666806
value: -.0726151913
inSlope: 3.84570837
outSlope: 3.84570837
tangentMode: 0
- time: .433333486
value: -.00730066141
inSlope: 3.97240233
outSlope: 3.97240233
tangentMode: 0
- time: .450000167
value: .0597983301
inSlope: 4.05673981
outSlope: 4.05673981
tangentMode: 0
- time: .466666847
value: .127924114
inSlope: 4.0929594
outSlope: 4.0929594
tangentMode: 0
- time: .483333528
value: .196230426
inSlope: 4.07632589
outSlope: 4.07632589
tangentMode: 0
- time: .500000179
value: .263801634
inSlope: 4.00340509
outSlope: 4.00340509
tangentMode: 0
- time: .51666683
value: .329677135
inSlope: 3.87230062
outSlope: 3.87230062
tangentMode: 0
- time: .53333348
value: .392878205
inSlope: 3.68281507
outSlope: 3.68281507
tangentMode: 0
- time: .550000131
value: .45243752
inSlope: 3.43655777
outSlope: 3.43655777
tangentMode: 0
- time: .566666782
value: .507430017
inSlope: 3.13696814
outSlope: 3.13696814
tangentMode: 0
- time: .583333433
value: .557003021
inSlope: 2.78925323
outSlope: 2.78925323
tangentMode: 0
- time: .600000083
value: .600405037
inSlope: 2.40026474
outSlope: 2.40026474
tangentMode: 0
- time: .616666734
value: .637011766
inSlope: 1.97824192
outSlope: 1.97824192
tangentMode: 0
- time: .633333385
value: .666346371
inSlope: 1.5325495
outSlope: 1.5325495
tangentMode: 0
- time: .650000036
value: .688096702
inSlope: 1.07332623
outSlope: 1.07332623
tangentMode: 0
- time: .666666687
value: .70212388
inSlope: .611082911
outSlope: .611082911
tangentMode: 0
- time: .683333337
value: .708466113
inSlope: .156346112
outSlope: .156346112
tangentMode: 0
- time: .699999988
value: .707335413
inSlope: -.280754238
outSlope: -.280754238
tangentMode: 0
- time: .716666639
value: .699107647
inSlope: -.690833986
outSlope: -.690833986
tangentMode: 0
- time: .73333329
value: .684307635
inSlope: -1.06556225
outSlope: -1.06556225
tangentMode: 0
- time: .74999994
value: .663588941
inSlope: -1.39791679
outSlope: -1.39791679
tangentMode: 0
- time: .766666591
value: .637710452
inSlope: -1.68234742
outSlope: -1.68234742
tangentMode: 0
- time: .783333242
value: .607510746
inSlope: -1.91489339
outSlope: -1.91489339
tangentMode: 0
- time: .799999893
value: .573880732
inSlope: -2.09318733
outSlope: -2.09318733
tangentMode: 0
- time: .816666543
value: .537737906
inSlope: -2.21640801
outSlope: -2.21640801
tangentMode: 0
- time: .833333194
value: .500000536
inSlope: -2.41055107
outSlope: -2.41055107
tangentMode: 0
- time: .849999845
value: .457386285
inSlope: -2.75948238
outSlope: -2.75948238
tangentMode: 0
- time: .866666496
value: .408017874
inSlope: -3.08220625
outSlope: -3.08220625
tangentMode: 0
- time: .883333147
value: .354646176
inSlope: -3.24774957
outSlope: -3.24774957
tangentMode: 0
- time: .899999797
value: .299759656
inSlope: -3.27038288
outSlope: -3.27038288
tangentMode: 0
- time: .916666448
value: .245633513
inSlope: -3.16345835
outSlope: -3.16345835
tangentMode: 0
- time: .933333099
value: .194311142
inSlope: -2.94287467
outSlope: -2.94287467
tangentMode: 0
- time: .94999975
value: .147537783
inSlope: -2.62913799
outSlope: -2.62913799
tangentMode: 0
- time: .9666664
value: .106673293
inSlope: -2.2477293
outSlope: -2.2477293
tangentMode: 0
- time: .983333051
value: .0726135448
inSlope: -1.8279618
outSlope: -1.8279618
tangentMode: 0
- time: .999999702
value: .0457412899
inSlope: -1.40073705
outSlope: -1.40073705
tangentMode: 0
- time: 1.01666641
value: .0259222817
inSlope: -.995695829
outSlope: -.995695829
tangentMode: 0
- time: 1.03333306
value: .0125513887
inSlope: -.638537824
outSlope: -.638537824
tangentMode: 0
- time: 1.04999971
value: .00463770796
inSlope: -.348907828
outSlope: -.348907828
tangentMode: 0
- time: 1.06666636
value: .000921139494
inSlope: -.139127374
outSlope: -.139127374
tangentMode: 0
- time: 1.08333302
value: 1.3315919e-07
inSlope: -.0123482961
outSlope: -.0123482961
tangentMode: 0
- time: 1.09999967
value: .000509530015
inSlope: .0443688296
outSlope: .0443688296
tangentMode: 0
- time: 1.11666632
value: .00147909275
inSlope: .0551864207
outSlope: .0551864207
tangentMode: 0
- time: 1.13333297
value: .00234907563
inSlope: .0411838219
outSlope: .0411838219
tangentMode: 0
- time: 1.14999962
value: .00285188551
inSlope: .0172349196
outSlope: .0172349196
tangentMode: 0
- time: 1.16666627
value: .00292357244
inSlope: -.00670210645
outSlope: -.00670210645
tangentMode: 0
- time: 1.18333292
value: .00262848218
inSlope: -.0247802828
outSlope: -.0247802828
tangentMode: 0
- time: 1.19999957
value: .00209756382
inSlope: -.034480527
outSlope: -.034480527
tangentMode: 0
- time: 1.21666622
value: .00147913245
inSlope: -.0358367115
outSlope: -.0358367115
tangentMode: 0
- time: 1.23333287
value: .000903007865
inSlope: -.0306715146
outSlope: -.0306715146
tangentMode: 0
- time: 1.24999952
value: .000456749636
inSlope: -.0218417812
outSlope: -.0218417812
tangentMode: 0
- time: 1.26666617
value: .000174949178
inSlope: -.0124657694
outSlope: -.0124657694
tangentMode: 0
- time: 1.28333282
value: 4.12243971e-05
inSlope: -.00515417289
outSlope: -.00515417289
tangentMode: 0
- time: 1.29999948
value: 3.14358408e-06
inSlope: -.00123273511
outSlope: -.00123273511
tangentMode: 0
- time: 1.31666672
value: 1.331573e-07
inSlope: -.000180619318
outSlope: -.000180619318
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
attribute: m_LocalRotation.z
path:
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: -1
inSlope: .130187273
outSlope: .130187273
tangentMode: 0
- time: .0166666675
value: -.997830212
inSlope: .263493061
outSlope: .263493061
tangentMode: 0
- time: .0333333351
value: -.991216898
inSlope: .533791721
outSlope: .533791721
tangentMode: 0
- time: .0500000045
value: -.980037153
inSlope: .809392333
outSlope: .809392333
tangentMode: 0
- time: .0666666701
value: -.964237154
inSlope: 1.08544183
outSlope: 1.08544183
tangentMode: 0
- time: .0833333358
value: -.943855762
inSlope: 1.35593009
outSlope: 1.35593009
tangentMode: 0
- time: .100000001
value: -.919039488
inSlope: 1.61420357
outSlope: 1.61420357
tangentMode: 0
- time: .116666667
value: -.890048981
inSlope: 1.85349202
outSlope: 1.85349202
tangentMode: 0
- time: .13333334
value: -.857256413
inSlope: 2.0674448
outSlope: 2.0674448
tangentMode: 0
- time: .150000006
value: -.82113415
inSlope: 2.25058818
outSlope: 2.25058818
tangentMode: 0
- time: .166666672
value: -.782236814
inSlope: 2.39876938
outSlope: 2.39876938
tangentMode: 0
- time: .183333337
value: -.741175175
inSlope: 2.50960016
outSlope: 2.50960016
tangentMode: 0
- time: .200000003
value: -.698583484
inSlope: 2.58277607
outSlope: 2.58277607
tangentMode: 0
- time: .216666669
value: -.655082643
inSlope: 2.62038612
outSlope: 2.62038612
tangentMode: 0
- time: .233333334
value: -.611237288
inSlope: 2.62715435
outSlope: 2.62715435
tangentMode: 0
- time: .25
value: -.567510843
inSlope: 2.610636
outSlope: 2.610636
tangentMode: 0
- time: .266666681
value: -.524216056
inSlope: 2.58135843
outSlope: 2.58135843
tangentMode: 0
- time: .283333361
value: -.481465489
inSlope: 2.55286646
outSlope: 2.55286646
tangentMode: 0
- time: .300000042
value: -.439120442
inSlope: 2.54167342
outSlope: 2.54167342
tangentMode: 0
- time: .316666722
value: -.39674297
inSlope: 2.56700683
outSlope: 2.56700683
tangentMode: 0
- time: .333333403
value: -.353553474
inSlope: 2.69203162
outSlope: 2.69203162
tangentMode: 0
- time: .350000083
value: -.307008505
inSlope: 2.94378281
outSlope: 2.94378281
tangentMode: 0
- time: .366666764
value: -.255427301
inSlope: 3.23583341
outSlope: 3.23583341
tangentMode: 0
- time: .383333445
value: -.199147299
inSlope: 3.50359058
outSlope: 3.50359058
tangentMode: 0
- time: .400000125
value: -.138640851
inSlope: 3.73896146
outSlope: 3.73896146
tangentMode: 0
- time: .416666806
value: -.074515149
inSlope: 3.93404341
outSlope: 3.93404341
tangentMode: 0
- time: .433333486
value: -.00750596263
inSlope: 4.0814991
outSlope: 4.0814991
tangentMode: 0
- time: .450000167
value: .0615349375
inSlope: 4.17491245
outSlope: 4.17491245
tangentMode: 0
- time: .466666847
value: .131657898
inSlope: 4.20911503
outSlope: 4.20911503
tangentMode: 0
- time: .483333528
value: .201838881
inSlope: 4.18046951
outSlope: 4.18046951
tangentMode: 0
- time: .500000179
value: .271006882
inSlope: 4.087111
outSlope: 4.087111
tangentMode: 0
- time: .51666683
value: .338075787
inSlope: 3.92910624
outSlope: 3.92910624
tangentMode: 0
- time: .53333348
value: .401976973
inSlope: 3.70850801
outSlope: 3.70850801
tangentMode: 0
- time: .550000131
value: .461692601
inSlope: 3.42933536
outSlope: 3.42933536
tangentMode: 0
- time: .566666782
value: .516288042
inSlope: 3.0974493
outSlope: 3.0974493
tangentMode: 0
- time: .583333433
value: .56494081
inSlope: 2.72035623
outSlope: 2.72035623
tangentMode: 0
- time: .600000083
value: .606966496
inSlope: 2.30692911
outSlope: 2.30692911
tangentMode: 0
- time: .616666734
value: .641838372
inSlope: 1.86702657
outSlope: 1.86702657
tangentMode: 0
- time: .633333385
value: .669200659
inSlope: 1.41115618
outSlope: 1.41115618
tangentMode: 0
- time: .650000036
value: .688876867
inSlope: .95004648
outSlope: .95004648
tangentMode: 0
- time: .666666687
value: .700868845
inSlope: .494238615
outSlope: .494238615
tangentMode: 0
- time: .683333337
value: .705351472
inSlope: .0537407994
outSlope: .0537407994
tangentMode: 0
- time: .699999988
value: .702660203
inSlope: -.362327456
outSlope: -.362327456
tangentMode: 0
- time: .716666639
value: .693273902
inSlope: -.745976686
outSlope: -.745976686
tangentMode: 0
- time: .73333329
value: .677794337
inSlope: -1.09056222
outSlope: -1.09056222
tangentMode: 0
- time: .74999994
value: .656921864
inSlope: -1.39090371
outSlope: -1.39090371
tangentMode: 0
- time: .766666591
value: .631430924
inSlope: -1.64329803
outSlope: -1.64329803
tangentMode: 0
- time: .783333242
value: .602145314
inSlope: -1.84554219
outSlope: -1.84554219
tangentMode: 0
- time: .799999893
value: .56991291
inSlope: -1.99678493
outSlope: -1.99678493
tangentMode: 0
- time: .816666543
value: .53558588
inSlope: -2.09738922
outSlope: -2.09738922
tangentMode: 0
- time: .833333194
value: .5
inSlope: -2.05838728
outSlope: -2.05838728
tangentMode: 0
- time: .849999845
value: .466973037
inSlope: -1.85664201
outSlope: -1.85664201
tangentMode: 0
- time: .866666496
value: .438111991
inSlope: -1.67823207
outSlope: -1.67823207
tangentMode: 0
- time: .883333147
value: .411032021
inSlope: -1.63226795
outSlope: -1.63226795
tangentMode: 0
- time: .899999797
value: .383703113
inSlope: -1.6921947
outSlope: -1.6921947
tangentMode: 0
- time: .916666448
value: .354625583
inSlope: -1.82355785
outSlope: -1.82355785
tangentMode: 0
- time: .933333099
value: .322917908
inSlope: -1.9889636
outSlope: -1.9889636
tangentMode: 0
- time: .94999975
value: .288326859
inSlope: -2.15259552
outSlope: -2.15259552
tangentMode: 0
- time: .9666664
value: .251164794
inSlope: -2.28403997
outSlope: -2.28403997
tangentMode: 0
- time: .983333051
value: .212192267
inSlope: -2.36113429
outSlope: -2.36113429
tangentMode: 0
- time: .999999702
value: .172460392
inSlope: -2.37154293
outSlope: -2.37154293
tangentMode: 0
- time: 1.01666641
value: .133140773
inSlope: -2.31261587
outSlope: -2.31261587
tangentMode: 0
- time: 1.03333306
value: .0953731313
inSlope: -2.19012594
outSlope: -2.19012594
tangentMode: 0
- time: 1.04999971
value: .060136646
inSlope: -2.01578403
outSlope: -2.01578403
tangentMode: 0
- time: 1.06666636
value: .0281803943
inSlope: -1.80401564
outSlope: -1.80401564
tangentMode: 0
- time: 1.08333302
value: 2.84909811e-06
inSlope: -1.52230191
outSlope: -1.52230191
tangentMode: 0
- time: 1.09999967
value: -.0225629546
inSlope: -1.15291381
outSlope: -1.15291381
tangentMode: 0
- time: 1.11666632
value: -.0384275727
inSlope: -.775349259
outSlope: -.775349259
tangentMode: 0
- time: 1.13333297
value: -.0484079048
inSlope: -.446913004
outSlope: -.446913004
tangentMode: 0
- time: 1.14999962
value: -.0533246584
inSlope: -.167428449
outSlope: -.167428449
tangentMode: 0
- time: 1.16666627
value: -.0539888479
inSlope: .0637786388
outSlope: .0637786388
tangentMode: 0
- time: 1.18333292
value: -.051198706
inSlope: .247209609
outSlope: .247209609
tangentMode: 0
- time: 1.19999957
value: -.0457485355
inSlope: .38312006
outSlope: .38312006
tangentMode: 0
- time: 1.21666622
value: -.0384280495
inSlope: .471462071
outSlope: .471462071
tangentMode: 0
- time: 1.23333287
value: -.0300331488
inSlope: .51196748
outSlope: .51196748
tangentMode: 0
- time: 1.24999952
value: -.0213624835
inSlope: .5044173
outSlope: .5044173
tangentMode: 0
- time: 1.26666617
value: -.013219256
inSlope: .448604822
outSlope: .448604822
tangentMode: 0
- time: 1.28333282
value: -.0064090034
inSlope: .344564348
outSlope: .344564348
tangentMode: 0
- time: 1.29999948
value: -.00173378817
inSlope: .192353889
outSlope: .192353889
tangentMode: 0
- time: 1.31666672
value: 2.84909811e-06
inSlope: .104194611
outSlope: .104194611
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
attribute: m_LocalRotation.w
path:
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .333333343
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .833333313
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .949999988
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
m_PreInfinity: 2
m_PostInfinity: 2
attribute: Emit
path: Trail
classID: 114
script: {fileID: 11500000, guid: 98335f20237e3de42a9f0b6415312e23, type: 3}
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .333333343
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
- time: .949999988
value: 0
inSlope: Infinity
outSlope: Infinity
tangentMode: 31
m_PreInfinity: 2
m_PostInfinity: 2
attribute: Emit
path: Trail
classID: 114
script: {fileID: 11500000, guid: 62cd7e0b3a08cf84e82658d9a3eaeb32, type: 3}
m_EulerEditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: -.000137329102
outSlope: -.000137329102
tangentMode: 10
- time: .333333343
value: -4.57763672e-05
inSlope: 3.81469799e-05
outSlope: 3.81469799e-05
tangentMode: 10
- time: .833333313
value: 6.10351562e-05
inSlope: 1.52588182e-05
outSlope: 1.52588182e-05
tangentMode: 10
- time: 1.08333337
value: 1.52587891e-05
inSlope: -9.15527125e-05
outSlope: -9.15527125e-05
tangentMode: 10
- time: 1.31666672
value: 1.52587891e-05
inSlope: 0
outSlope: 0
tangentMode: 10
m_PreInfinity: 2
m_PostInfinity: 2
attribute: localEulerAnglesBaked.x
path:
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: -360
outSlope: -360
tangentMode: 10
- time: .333333343
value: -120
inSlope: -510.000031
outSlope: -510.000031
tangentMode: 10
- time: .833333313
value: -450
inSlope: -509.999512
outSlope: -509.999512
tangentMode: 10
- time: 1.08333337
value: -539.999756
inSlope: -179.999329
outSlope: -179.999329
tangentMode: 10
- time: 1.31666672
value: -539.999695
inSlope: .000261579233
outSlope: .000261579233
tangentMode: 10
m_PreInfinity: 2
m_PostInfinity: 2
attribute: localEulerAnglesBaked.y
path:
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 270
outSlope: 270
tangentMode: 10
- time: .333333343
value: 90
inSlope: -28.7108326
outSlope: -28.7108326
tangentMode: 0
- time: .833333373
value: 90
inSlope: -15.7392578
outSlope: -15.7392578
tangentMode: 0
- time: 1.08333337
value: -3.05175781e-05
inSlope: -180.000061
outSlope: -180.000061
tangentMode: 10
- time: 1.31666672
value: -3.05175781e-05
inSlope: 0
outSlope: 0
tangentMode: 10
m_PreInfinity: 2
m_PostInfinity: 2
attribute: localEulerAnglesBaked.z
path:
classID: 4
script: {fileID: 0}
m_Events: []
fileFormatVersion: 2
guid: 1ff349405471a5a418ff10436d9df104
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
NativeFormatImporter:
userData:
fileFormatVersion: 2
guid: d4de684faa45d464b9472825efafc18a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 05284a03916175a49a350e9085935f2f
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 1024
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 75ffda878191c7e4dbab2496c1598b87
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 19bac775940f2024a80fd4f854a89757
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 1024
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 1
mipBias: -100
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: 7
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 1
pSDShowRemoveMatteOption: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: ab57b896b404a59408ebf39685d56722
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 00a8583ea2608b74fb2b397ebd76ffc6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: e26759b79882e574cb7c7ee86b4843dd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using PigeonCoopToolkit.Effects.Trails;
using UnityEditor;
using System.Collections.Generic;
namespace PigeonCoopToolkit.TouchInputManager.Editor
{
[InitializeOnLoad]
public class ExecutionOrderSetter
{
static ExecutionOrderSetter()
{
var scriptlist = new List<string>
{
typeof (TrailRenderer_Base).Name,
typeof (Trail).Name,
typeof (SmoothTrail).Name,
typeof (SmokeTrail).Name,
typeof (SmokePlume).Name
};
foreach (MonoScript monoScript in MonoImporter.GetAllRuntimeMonoScripts())
{
if (!scriptlist.Contains(monoScript.name)) continue;
if(MonoImporter.GetExecutionOrder(monoScript) != 1000)
MonoImporter.SetExecutionOrder(monoScript, 1000);
}
}
}
}
fileFormatVersion: 2
guid: 6729d5e44ac233945be3883bbcacec24
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using PigeonCoopToolkit.Generic.Editor;
using UnityEditor;
namespace PigeonCoopToolkit.Effects.Trails.Editor
{
[InitializeOnLoad]
public class BetterTrailsIntroDialogue : InfoDialogueSpawner
{
private static BetterTrailsIntroDialogue _instance;
static BetterTrailsIntroDialogue()
{
_instance = new BetterTrailsIntroDialogue();
_instance.SetParams(
"Better Trails",
"PCTK/Effects/Trails/banner",
new Generic.VersionInformation("Better Trails", 1, 5, 0),
"/PigeonCoopToolkit/__Effects (Trails) Examples/Pigeon Coop Toolkit - Effects (Trails).pdf",
"16076");
}
[MenuItem("Window/Pigeon Coop Toolkit/Better Trails/About")]
public static void About()
{
_instance.LaunchAbout();
}
}
}
fileFormatVersion: 2
guid: 003fa1f8580533c43b6cbb6e5a5f23af
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace PigeonCoopToolkit.Effects.Trails.Editor
{
[CustomEditor(typeof(SmokePlume))]
[CanEditMultipleObjects]
public class SmokePlumeEditor : TrailEditor_Base
{
protected override void DrawTrailSpecificGUI()
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("ConstantForce"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("RandomForceScale"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("TimeBetweenPoints"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("MaxNumberOfPoints"));
}
}
}
fileFormatVersion: 2
guid: ddcb2ed96cba10e4da2cae8ff8533fda
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace PigeonCoopToolkit.Effects.Trails.Editor
{
[CustomEditor(typeof(SmokeTrail))]
[CanEditMultipleObjects]
public class SmokeTrailEditor : TrailEditor_Base
{
protected override void DrawTrailSpecificGUI()
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("RandomForceScale"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("MinVertexDistance"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("MaxNumberOfPoints"));
}
}
}
fileFormatVersion: 2
guid: bf32d2b00d1c88c4b91cf689b5f770c5
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace PigeonCoopToolkit.Effects.Trails.Editor
{
[CustomEditor(typeof(SmoothTrail))]
[CanEditMultipleObjects]
public class SmoothTrailEditor : TrailEditor_Base
{
protected override void DrawTrailSpecificGUI()
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("MinControlPointDistance"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("MaxControlPoints"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("PointsBetweenControlPoints"));
}
}
}
fileFormatVersion: 2
guid: 8d3c5575a1540ae4c8226a385921b799
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace PigeonCoopToolkit.Effects.Trails.Editor
{
[CustomEditor(typeof(Trail))]
[CanEditMultipleObjects]
public class TrailEditor : TrailEditor_Base
{
protected override void DrawTrailSpecificGUI()
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("MinVertexDistance"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("MaxNumberOfPoints"));
}
}
}
fileFormatVersion: 2
guid: dba587684cc69dc4097b307d0bacf81d
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace PigeonCoopToolkit.Effects.Trails.Editor
{
public class TrailEditor_Base : UnityEditor.Editor
{
public static TrailPreviewUtillity win;
protected List<string> ExcludedDefaultPropties = new List<string>();
public override void OnInspectorGUI()
{
TrailRenderer_Base t = (TrailRenderer_Base)serializedObject.targetObject;
if (t == null)
return;
float defaultLabelWidth = EditorGUIUtility.labelWidth;
float defaultFieldWidth = EditorGUIUtility.fieldWidth;
GUILayout.Space(5);
GUILayout.BeginVertical();
if (!ExcludedDefaultPropties.Contains("TrailData.Lifetime"))
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.Lifetime"));
}
EditorGUIUtility.labelWidth = defaultLabelWidth;
EditorGUIUtility.fieldWidth = defaultFieldWidth;
GUILayout.BeginHorizontal();
EditorGUIUtility.fieldWidth = defaultLabelWidth - 80;
if (!ExcludedDefaultPropties.Contains("TrailData.TrailMaterial"))
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.TrailMaterial"));
}
GUILayout.Space(10);
EditorGUIUtility.labelWidth = 30;
EditorGUIUtility.fieldWidth = 40;
if (!ExcludedDefaultPropties.Contains("TrailData.MaterialTileLength"))
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.MaterialTileLength"), new GUIContent("Tile"), GUILayout.Width(70));
}
GUILayout.EndHorizontal();
EditorGUIUtility.labelWidth = defaultLabelWidth;
EditorGUIUtility.fieldWidth = defaultFieldWidth;
GUILayout.BeginHorizontal();
if (!ExcludedDefaultPropties.Contains("TrailData.SizeOverLife"))
{
if (t.TrailData.UsingSimpleSize)
{
EditorGUILayout.LabelField("Size Over Life", GUILayout.Width(defaultLabelWidth));
serializedObject.FindProperty("TrailData.SimpleSizeOverLifeStart").floatValue =
EditorGUILayout.FloatField(serializedObject.FindProperty("TrailData.SimpleSizeOverLifeStart").floatValue);
serializedObject.FindProperty("TrailData.SimpleSizeOverLifeEnd").floatValue =
EditorGUILayout.FloatField(serializedObject.FindProperty("TrailData.SimpleSizeOverLifeEnd").floatValue);
}
else
{
EditorGUIUtility.fieldWidth = defaultLabelWidth - 80;
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.SizeOverLife"));
}
}
GUILayout.Space(10);
EditorGUIUtility.labelWidth = 50;
EditorGUIUtility.fieldWidth = 20;
if (!ExcludedDefaultPropties.Contains("TrailData.StretchSizeToFit"))
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.StretchSizeToFit"), new GUIContent("Stretch"), GUILayout.Width(70));
}
GUILayout.EndHorizontal();
EditorGUIUtility.labelWidth = defaultLabelWidth;
EditorGUIUtility.fieldWidth = defaultFieldWidth;
GUILayout.BeginHorizontal();
EditorGUIUtility.fieldWidth = defaultLabelWidth - 80;
if (!ExcludedDefaultPropties.Contains("TrailData.ColorOverLife"))
{
if (t.TrailData.UsingSimpleColor)
{
EditorGUIUtility.fieldWidth = (defaultFieldWidth - 80)/2f;
EditorGUILayout.LabelField("Color Over Life", GUILayout.Width(defaultLabelWidth));
serializedObject.FindProperty("TrailData.SimpleColorOverLifeStart").colorValue =
EditorGUILayout.ColorField(serializedObject.FindProperty("TrailData.SimpleColorOverLifeStart").colorValue);
serializedObject.FindProperty("TrailData.SimpleColorOverLifeEnd").colorValue =
EditorGUILayout.ColorField(serializedObject.FindProperty("TrailData.SimpleColorOverLifeEnd").colorValue);
}
else
{
EditorGUIUtility.fieldWidth = defaultLabelWidth - 80;
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.ColorOverLife"));
}
}
GUILayout.Space(10);
EditorGUIUtility.labelWidth = 50;
EditorGUIUtility.fieldWidth = 20;
if (!ExcludedDefaultPropties.Contains("TrailData.StretchColorToFit"))
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.StretchColorToFit"), new GUIContent("Stretch"), GUILayout.Width(70));
}
GUILayout.EndHorizontal();
EditorGUIUtility.labelWidth = defaultLabelWidth;
EditorGUIUtility.fieldWidth = defaultFieldWidth;
if (!ExcludedDefaultPropties.Contains("TrailData.UseForwardOverride"))
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.UseForwardOverride"));
}
if (t.TrailData.UseForwardOverride)
{
EditorGUI.indentLevel++;
if (!ExcludedDefaultPropties.Contains("TrailData.ForwardOverride"))
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.ForwardOverride"));
}
if (!ExcludedDefaultPropties.Contains("TrailData.ForwardOverrideRelative"))
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.ForwardOverrideRelative"), new GUIContent("Override Relative"));
}
EditorGUI.indentLevel--;
}
DrawTrailSpecificGUI();
if (!ExcludedDefaultPropties.Contains("Emit"))
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("Emit"));
}
GUILayout.EndVertical();
serializedObject.ApplyModifiedProperties();
serializedObject.UpdateIfDirtyOrScript();
GUILayout.Space(5);
if (GUILayout.Button("Open preview"))
{
// Get existing open window or if none, make a new one:
win = (TrailPreviewUtillity)EditorWindow.GetWindow(typeof(TrailPreviewUtillity), true, "Normalized Trail Preview");
win.minSize = new Vector2(900, 140);
win.maxSize = new Vector2(900, 140);
win.Trail = t;
}
}
protected virtual void DrawTrailSpecificGUI()
{}
}
}
fileFormatVersion: 2
guid: 0ab5f16befc58ca4bbfb8159ae3ead06
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using UnityEngine;
using UnityEditor;
namespace PigeonCoopToolkit.Effects.Trails.Editor
{
public class TrailPreviewUtillity : EditorWindow
{
public TrailRenderer_Base Trail;
void Update()
{
if (Trail == null || Trail.TrailData == null || Selection.activeGameObject != Trail.gameObject)
{
Close();
return;
}
Repaint();
}
void OnGUI()
{
if (Trail == null || Trail.TrailData == null)
{
return;
}
GUIStyle blackBG = new GUIStyle();
blackBG.normal.background = EditorGUIUtility.whiteTexture;
blackBG.normal.textColor = Color.white;
Color revertTo = GUI.color;
float highPoint = 0;
for (int i = 0; i < 100; i++)
{
float s = (Trail.TrailData.UsingSimpleSize ? Mathf.Lerp(Trail.TrailData.SimpleSizeOverLifeStart, Trail.TrailData.SimpleSizeOverLifeEnd, (float)i / (float)100) : Trail.TrailData.SizeOverLife.Evaluate((float)i / (float)100));
if (highPoint < s)
highPoint = s;
}
GUI.color = new Color(0.3f,0.3f,0.3f,1);
GUILayout.BeginArea(new Rect(0, 0, position.width, position.height), blackBG);
float xPos = 0;
float increment = 101;
float modulo = 303;
while (xPos * increment < position.width)
{
xPos++;
DrawLine(Vector2.right * (xPos * increment), Vector2.right * (xPos * increment) + Vector2.up * position.height, xPos * increment % modulo == 0 ? new Color(1, 1, 1, 0.1f) : new Color(1, 1, 1, 0.025f), 1);
}
DrawLine(Vector2.up * position.height / 2, Vector2.right * position.width + Vector2.up * position.height / 2, new Color(1, 1, 1, 0.1f), 1);
GL.PushMatrix();
GL.LoadPixelMatrix(-0.5f, 0.5f, 0.5f, -0.5f);
if (Trail.TrailData.TrailMaterial != null)
Trail.TrailData.TrailMaterial.SetPass(0);
GL.Begin(GL.TRIANGLE_STRIP);
InsertTriangle(0, 1);
for (int i = 0; i < 100; i++)
{
InsertTriangle((float)i / (float)100, highPoint * 2);
}
GL.End();
GL.PopMatrix();
GUILayout.EndArea();
if (Trail.TrailData.TrailMaterial == null)
{
GUILayout.BeginVertical();
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
GUI.color = new Color(0, 0, 0, 0.15f);
GUILayout.BeginVertical();
GUILayout.FlexibleSpace();
GUILayout.BeginVertical(blackBG);
GUI.color = Color.white;
GUILayout.Label("Material is NULL", EditorStyles.whiteMiniLabel);
GUILayout.EndVertical();
GUILayout.FlexibleSpace();
GUILayout.EndVertical();
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
GUILayout.EndVertical();
}
else
{
GUILayout.BeginVertical();
GUILayout.FlexibleSpace();
GUILayout.BeginHorizontal();
GUI.color = new Color(0, 0, 0, 0.15f);
GUILayout.BeginVertical(blackBG);
GUI.color = Color.white;
GUILayout.Label("Start", EditorStyles.whiteMiniLabel);
GUILayout.EndVertical();
GUILayout.FlexibleSpace();
GUI.color = new Color(0, 0, 0, 0.15f);
GUILayout.BeginVertical(blackBG);
GUI.color = Color.white;
GUILayout.Label("End", EditorStyles.whiteMiniLabel);
GUILayout.EndVertical();
GUILayout.EndHorizontal();
GUILayout.EndVertical();
}
GUI.color = revertTo;
}
void InsertTriangle(float t, float scaler)
{
if(scaler <= 0)
return;
Color c = (Trail.TrailData.UsingSimpleColor ?
Color.Lerp(Trail.TrailData.SimpleColorOverLifeStart, Trail.TrailData.SimpleColorOverLifeEnd, t) :
Trail.TrailData.ColorOverLife.Evaluate(t));
float s = (Trail.TrailData.UsingSimpleSize ? Mathf.Lerp(Trail.TrailData.SimpleSizeOverLifeStart, Trail.TrailData.SimpleSizeOverLifeEnd, t) : Trail.TrailData.SizeOverLife.Evaluate(t)) / (scaler);
GL.Color(c);
GL.Vertex3(t, 0.5f + s, 0);
GL.MultiTexCoord(0, Trail.TrailData.MaterialTileLength > 0 ? new Vector3((t * position.width) / (300 * Trail.TrailData.MaterialTileLength), 0, 0) : new Vector3(t, 0, 0));
GL.Vertex3(t, 0.5f - s, 0);
GL.MultiTexCoord(0, Trail.TrailData.MaterialTileLength > 0 ? new Vector3((t * position.width) / (300 * Trail.TrailData.MaterialTileLength), 1, 0) : new Vector3(t, 1, 0));
}
public static void DrawLine(Vector2 start, Vector2 end, Color color, float width)
{
if (Event.current == null)
return;
if (Event.current.type != EventType.Repaint)
return;
CreateMaterial();
lineMaterial.SetPass(0);
Vector3 startPt;
Vector3 endPt;
if (width == 1)
{
GL.Begin(GL.LINES);
GL.Color(color);
startPt = new Vector3(start.x, start.y, 0);
endPt = new Vector3(end.x, end.y, 0);
GL.Vertex(startPt);
GL.Vertex(endPt);
}
else
{
GL.Begin(GL.QUADS);
GL.Color(color);
startPt = new Vector3(end.y, start.x, 0);
endPt = new Vector3(start.y, end.x, 0);
Vector3 perpendicular = (startPt - endPt).normalized * width;
Vector3 v1 = new Vector3(start.x, start.y, 0);
Vector3 v2 = new Vector3(end.x, end.y, 0);
GL.Vertex(v1 - perpendicular);
GL.Vertex(v1 + perpendicular);
GL.Vertex(v2 + perpendicular);
GL.Vertex(v2 - perpendicular);
}
GL.End();
}
public static void CreateMaterial()
{
if (lineMaterial != null)
return;
lineMaterial = new Material(Shader.Find("Particles/Alpha Blended"));
lineMaterial.hideFlags = HideFlags.HideAndDontSave;
lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave;
}
public static Material lineMaterial = null;
}
}
/*
using UnityEngine;
using UnityEditor;
namespace PigeonCoopToolkit.Effects.Trails.Editor
{
public class TrailPreviewUtillity : EditorWindow
{
public PCTrailRendererData Data;
void OnGUI()
{
if(Data == null)
{
Close();
return;
}
DrawLine(Vector2.zero, Vector2.right + Vector2.up,Color.red,1,Data.TrailMaterial);
}
public static void DrawLine(Vector2 start, Vector2 end, Color color, float width, Material m)
{
if (Event.current == null)
return;
if (Event.current.type != EventType.repaint)
return;
m.SetPass(0);
Vector3 startPt;
Vector3 endPt;
if (width == 1)
{
GL.Begin(GL.LINES);
GL.Color(color);
startPt = new Vector3(start.x, start.y, 0);
endPt = new Vector3(end.x, end.y, 0);
GL.Vertex(startPt);
GL.Vertex(endPt);
}
else
{
GL.Begin(GL.QUADS);
GL.Color(color);
startPt = new Vector3(end.y, start.x, 0);
endPt = new Vector3(start.y, end.x, 0);
Vector3 perpendicular = (startPt - endPt).normalized * width;
Vector3 v1 = new Vector3(start.x, start.y, 0);
Vector3 v2 = new Vector3(end.x, end.y, 0);
GL.Vertex(v1 - perpendicular);
GL.Vertex(v1 + perpendicular);
GL.Vertex(v2 + perpendicular);
GL.Vertex(v2 - perpendicular);
}
GL.End();
}
}
}
*/
\ No newline at end of file
fileFormatVersion: 2
guid: 34af64ac36cf82046853c1e9e5421c3b
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
fileFormatVersion: 2
guid: 120965d05d04d964b8a65d714e3a0358
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 9c8d55a9e91d98e4e925cd09f877adc5
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 1024
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: 2
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 1
pSDShowRemoveMatteOption: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: f99224b2104474d47b91284e88f8af87
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 1024
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: 2
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 1
pSDShowRemoveMatteOption: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 8d56c6f37ee95884baa3b4f7e4837399
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 1024
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: 2
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 1
pSDShowRemoveMatteOption: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 888165c9c85ad6b429824b89f1f4f698
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 1024
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: 2
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 1
pSDShowRemoveMatteOption: 1
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
namespace PigeonCoopToolkit.Effects.Trails
{
[AddComponentMenu("Pigeon Coop Toolkit/Effects/Smoke Plume")]
public class SmokePlume : TrailRenderer_Base
{
public float TimeBetweenPoints = 0.1f;
public Vector3 ConstantForce = Vector3.up * 0.5f;
public float RandomForceScale = 0.05f;
public int MaxNumberOfPoints = 50;
private float _timeSincePoint;
protected override void Start()
{
base.Start();
_timeSincePoint = 0;
}
protected override void OnStartEmit()
{
_timeSincePoint = 0;
}
protected override void Reset()
{
base.Reset();
TrailData.SizeOverLife = new AnimationCurve(new Keyframe(0, 0), new Keyframe(0.5f, 0.2f), new Keyframe(1, 0.2f));
TrailData.Lifetime = 6f;
ConstantForce = Vector3.up*0.5f;
TimeBetweenPoints = 0.1f;
RandomForceScale = 0.05f;
MaxNumberOfPoints = 50;
}
protected override void Update()
{
if (_emit)
{
_timeSincePoint += _noDecay ? 0 : Time.deltaTime;
if (_timeSincePoint >= TimeBetweenPoints)
{
AddPoint(new SmokeTrailPoint(), _t.position);
_timeSincePoint = 0;
}
}
base.Update();
}
protected override void InitialiseNewPoint(PCTrailPoint newPoint)
{
((SmokeTrailPoint)newPoint).RandomVec = Random.onUnitSphere * RandomForceScale;
}
protected override void UpdateTrail(PCTrail trail, float deltaTime)
{
if (_noDecay)
return;
foreach (PCTrailPoint point in trail.Points)
{
point.Position += ConstantForce * deltaTime;
}
}
protected override int GetMaxNumberOfPoints()
{
return MaxNumberOfPoints;
}
}
}
fileFormatVersion: 2
guid: b5748bb800508004a81afe3d7526bcb1
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 1000
icon: {fileID: 2800000, guid: 9c8d55a9e91d98e4e925cd09f877adc5, type: 3}
userData:
using UnityEngine;
namespace PigeonCoopToolkit.Effects.Trails
{
[AddComponentMenu("Pigeon Coop Toolkit/Effects/Smoke Trail")]
public class SmokeTrail : TrailRenderer_Base
{
public float MinVertexDistance = 0.1f;
public int MaxNumberOfPoints = 50;
private Vector3 _lastPosition;
private float _distanceMoved;
public float RandomForceScale = 1;
protected override void Start()
{
base.Start();
_lastPosition = _t.position;
}
protected override void Update()
{
if (_emit)
{
_distanceMoved += Vector3.Distance(_t.position, _lastPosition);
if (_distanceMoved != 0 && _distanceMoved >= MinVertexDistance)
{
AddPoint(new SmokeTrailPoint(), _t.position);
_distanceMoved = 0;
}
_lastPosition = _t.position;
}
base.Update();
}
protected override void OnStartEmit()
{
_lastPosition = _t.position;
_distanceMoved = 0;
}
protected override void Reset()
{
base.Reset();
MinVertexDistance = 0.1f;
RandomForceScale = 1;
}
protected override void InitialiseNewPoint(PCTrailPoint newPoint)
{
((SmokeTrailPoint)newPoint).RandomVec = Random.onUnitSphere * RandomForceScale;
}
protected override void OnTranslate(Vector3 t)
{
_lastPosition += t;
}
protected override int GetMaxNumberOfPoints()
{
return MaxNumberOfPoints;
}
}
public class SmokeTrailPoint : PCTrailPoint
{
public Vector3 RandomVec;
public override void Update(float deltaTime)
{
base.Update(deltaTime);
Position += RandomVec * deltaTime;
}
}
}
fileFormatVersion: 2
guid: 98335f20237e3de42a9f0b6415312e23
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 1000
icon: {fileID: 2800000, guid: f99224b2104474d47b91284e88f8af87, type: 3}
userData:
using PigeonCoopToolkit.Utillities;
using UnityEngine;
namespace PigeonCoopToolkit.Effects.Trails
{
[AddComponentMenu("Pigeon Coop Toolkit/Effects/Smooth Trail")]
public class SmoothTrail : TrailRenderer_Base
{
public float MinControlPointDistance = 0.1f;
public int MaxControlPoints = 15;
public int PointsBetweenControlPoints = 4;
private Vector3 _lastPosition;
private float _distanceMoved;
private CircularBuffer<ControlPoint> _controlPoints;
private class ControlPoint
{
public Vector3 p;
public Vector3 forward;
}
protected override void Start()
{
base.Start();
_lastPosition = _t.position;
}
protected override void Update()
{
if (_emit)
{
_distanceMoved += Vector3.Distance(_t.position, _lastPosition);
if (!Mathf.Approximately(_distanceMoved, 0) && _distanceMoved >= MinControlPointDistance)
{
AddControlPoint(_t.position);
_distanceMoved = 0;
}
else
{
_controlPoints[_controlPoints.Count - 1].p = _t.position;
if (TrailData.UseForwardOverride)
{
_controlPoints[_controlPoints.Count - 1].forward = TrailData.ForwardOverrideRelative
? _t.TransformDirection(TrailData.ForwardOverride.normalized)
: TrailData.ForwardOverride.normalized;
}
}
_lastPosition = _t.position;
}
base.Update();
}
/*
void OnDrawGizmos()
{
if (Application.isPlaying && _controlPoints != null)
{
for (int i = 0; i < _controlPoints.Count; i++)
{
Gizmos.color = Color.red;
Gizmos.DrawSphere(_controlPoints[i].p, 0.01f);
if (i < _controlPoints.Count - 1)
{
Vector3 Handle1, Handle2;
float distanceBetween = Vector3.Distance(_controlPoints[i].p, _controlPoints[i + 1].p) / 2;
if (i == 0)
{
Handle1 = _controlPoints[i].p + (_controlPoints[i + 1].p - _controlPoints[i].p).normalized * distanceBetween;
}
else
{
Handle1 = _controlPoints[i].p + (_controlPoints[i + 1].p - _controlPoints[i - 1].p).normalized * distanceBetween;
}
int nextI = i + 1;
if (nextI == _controlPoints.Count - 1)
{
Handle2 = _controlPoints[nextI].p + (_controlPoints[nextI - 1].p - _controlPoints[nextI].p).normalized * distanceBetween;
}
else
{
Handle2 = _controlPoints[nextI].p + (_controlPoints[nextI - 1].p - _controlPoints[nextI + 1].p).normalized * distanceBetween;
}
Gizmos.color = Color.green;
Gizmos.DrawSphere(Handle1, 0.01f);
Gizmos.DrawLine(_controlPoints[i].p, Handle1);
Gizmos.color = Color.blue;
Gizmos.DrawSphere(Handle2, 0.01f);
Gizmos.DrawLine(_controlPoints[nextI].p, Handle2);
Vector3 current = _controlPoints[i].p;
for (int pointBetween = 0; pointBetween < PointsBetweenControlPoints; pointBetween++)
{
Vector3 next = GetPointAlongCurve(_controlPoints[i].p, Handle1, _controlPoints[i + 1].p, Handle2, ((pointBetween + 1) / ((float)PointsBetweenControlPoints + 1f)), 0.3f);
Gizmos.DrawLine(current, next);
Gizmos.color = Color.yellow;
Gizmos.DrawSphere(next, 0.01f);
current = next;
}
Gizmos.color = Color.blue;
Gizmos.DrawLine(current, _controlPoints[i + 1].p);
}
}
}
}
*/
protected override void OnStartEmit()
{
_lastPosition = _t.position;
_distanceMoved = 0;
_controlPoints = new CircularBuffer<ControlPoint>(MaxControlPoints);
_controlPoints.Add(new ControlPoint { p = _lastPosition });
if (TrailData.UseForwardOverride)
{
_controlPoints[0].forward = TrailData.ForwardOverrideRelative
? _t.TransformDirection(TrailData.ForwardOverride.normalized)
: TrailData.ForwardOverride.normalized;
}
AddPoint(new PCTrailPoint(), _lastPosition);
AddControlPoint(_lastPosition);
}
protected override void UpdateTrail(PCTrail trail, float deltaTime)
{
if (trail.IsActiveTrail == false)
return;
//TODO Must optimize this further, I don't need to keep recalculating point positions unless we are
//dealng with the points between the last and 2nd last CP (+ the last CP itself)
int trailPointIndex = 0;
for (int i = 0; i < _controlPoints.Count; i++)
{
trail.Points[trailPointIndex].Position = _controlPoints[i].p;
if (TrailData.UseForwardOverride)
{
trail.Points[trailPointIndex].Forward = _controlPoints[i].forward;
}
trailPointIndex++;
if (i < _controlPoints.Count - 1)
{
Vector3 Handle1, Handle2;
float distanceBetween = Vector3.Distance(_controlPoints[i].p, _controlPoints[i + 1].p) / 2;
if (i == 0)
{
Handle1 = _controlPoints[i].p + (_controlPoints[i + 1].p - _controlPoints[i].p).normalized * distanceBetween;
}
else
{
Handle1 = _controlPoints[i].p + (_controlPoints[i + 1].p - _controlPoints[i - 1].p).normalized * distanceBetween;
}
int nextI = i + 1;
if (nextI == _controlPoints.Count - 1)
{
Handle2 = _controlPoints[nextI].p + (_controlPoints[nextI - 1].p - _controlPoints[nextI].p).normalized * distanceBetween;
}
else
{
Handle2 = _controlPoints[nextI].p + (_controlPoints[nextI - 1].p - _controlPoints[nextI + 1].p).normalized * distanceBetween;
}
PCTrailPoint currentHandle = trail.Points[trailPointIndex-1];
PCTrailPoint nextHandle = trail.Points[(trailPointIndex-1) + PointsBetweenControlPoints+1];
for (int pointBetween = 0; pointBetween < PointsBetweenControlPoints; pointBetween++)
{
float t= (((float)pointBetween + 1f) / ((float)PointsBetweenControlPoints + 1f));
trail.Points[trailPointIndex].Position = GetPointAlongCurve(_controlPoints[i].p, Handle1, _controlPoints[i + 1].p, Handle2, t, 0.3f);
trail.Points[trailPointIndex].SetTimeActive(Mathf.Lerp(currentHandle.TimeActive(), nextHandle.TimeActive(), t));
if (TrailData.UseForwardOverride)
{
trail.Points[trailPointIndex].Forward = Vector3.Lerp(currentHandle.Forward, nextHandle.Forward, t);
}
trailPointIndex++;
}
}
}
int lastControlPointPointIndex = ((_controlPoints.Count - 1) + ((_controlPoints.Count - 1) * PointsBetweenControlPoints));
int prevControlPointPointIndex = lastControlPointPointIndex - PointsBetweenControlPoints - 1;
int activePointCount = lastControlPointPointIndex + 1;
/*
*
* This is that optimisation mentioned above..sort of works, but smoothing isn't working right so i am leaving it out for now
*
*
int lastControlPointIndex = _controlPoints.Count - 1;
int prevControlPointIndex = _controlPoints.Count - 2;
Vector3 Handle1, Handle2;
float distanceBetween = Vector3.Distance(_controlPoints[lastControlPointIndex].p, _controlPoints[prevControlPointIndex].p) / 2;
if (prevControlPointIndex == 0)
Handle1 = _controlPoints[prevControlPointIndex].p + (_controlPoints[lastControlPointIndex].p - _controlPoints[prevControlPointIndex].p).normalized * distanceBetween;
else
Handle1 = _controlPoints[prevControlPointIndex].p + (_controlPoints[lastControlPointIndex].p - _controlPoints[prevControlPointIndex - 1].p).normalized * distanceBetween;
Handle2 = _controlPoints[lastControlPointIndex].p + (_controlPoints[prevControlPointIndex].p - _controlPoints[lastControlPointIndex].p).normalized * distanceBetween;
float timeActiveLastControlPoint = trail.Points[lastControlPointPointIndex].TimeActive();
float timeActivePrevControlPoint = trail.Points[prevControlPointPointIndex].TimeActive();
for (int pointBetween = 0; pointBetween < PointsBetweenControlPoints; pointBetween++)
{
float t= (((float)pointBetween + 1f) / ((float)PointsBetweenControlPoints + 1f));
trail.Points[prevControlPointPointIndex + pointBetween + 1].Position = GetPointAlongCurve(_controlPoints[prevControlPointIndex].p, Handle1, _controlPoints[lastControlPointIndex].p, Handle2, t, 0.3f);
trail.Points[prevControlPointPointIndex + pointBetween + 1].SetTimeActive(Mathf.Lerp(timeActivePrevControlPoint, timeActiveLastControlPoint, t));
}
trail.Points[lastControlPointPointIndex].Position = _controlPoints[lastControlPointIndex].p;
*/
float distanceFromStart = trail.Points[prevControlPointPointIndex].GetDistanceFromStart();
for (int i = prevControlPointPointIndex + 1; i < activePointCount; i++)
{
distanceFromStart += Vector3.Distance(trail.Points[i - 1].Position, trail.Points[i].Position);
trail.Points[i].SetDistanceFromStart(distanceFromStart);
}
}
protected override void Reset()
{
base.Reset();
MinControlPointDistance = 0.1f;
MaxControlPoints = 15;
PointsBetweenControlPoints = 4;
}
protected override void OnTranslate(Vector3 t)
{
_lastPosition += t;
for (int i = 0; i < _controlPoints.Count; i++)
_controlPoints[i].p += t;
}
private void AddControlPoint(Vector3 position)
{
for (int i = 0; i < PointsBetweenControlPoints; i++)
{
AddPoint(new PCTrailPoint(), position);
}
AddPoint(new PCTrailPoint(), position);
ControlPoint newCP = new ControlPoint { p = position };
if (TrailData.UseForwardOverride)
{
newCP.forward = TrailData.ForwardOverrideRelative
? _t.TransformDirection(TrailData.ForwardOverride.normalized)
: TrailData.ForwardOverride.normalized;
}
_controlPoints.Add(newCP);
}
protected override int GetMaxNumberOfPoints()
{
return ((MaxControlPoints) + ((MaxControlPoints) * PointsBetweenControlPoints));
}
public Vector3 GetPointAlongCurve(Vector3 curveStart, Vector3 curveStartHandle, Vector3 curveEnd, Vector3 curveEndHandle, float t, float crease)
{
float oneMinT = 1 - t;
float oneMinTPow3 = Mathf.Pow(oneMinT, 3);
float oneMinTPow2 = Mathf.Pow(oneMinT, 2);
float oneMinCrease = 1 - crease;
return ((oneMinTPow3 * curveStart * oneMinCrease) + (3 * oneMinTPow2 * t * curveStartHandle * crease) + (3 * oneMinT * Mathf.Pow(t, 2) * curveEndHandle * crease) +
(Mathf.Pow(t, 3) * curveEnd * oneMinCrease))
/
((oneMinTPow3 * oneMinCrease) + (3 * oneMinTPow2 * t * crease) + (3 * oneMinT * Mathf.Pow(t, 2) * crease) +
(Mathf.Pow(t, 3) * oneMinCrease));
}
}
}
fileFormatVersion: 2
guid: 62cd7e0b3a08cf84e82658d9a3eaeb32
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 1000
icon: {fileID: 2800000, guid: 8d56c6f37ee95884baa3b4f7e4837399, type: 3}
userData:
using UnityEngine;
namespace PigeonCoopToolkit.Effects.Trails
{
[AddComponentMenu("Pigeon Coop Toolkit/Effects/Trail")]
public class Trail : TrailRenderer_Base
{
public float MinVertexDistance = 0.1f;
public int MaxNumberOfPoints = 50;
private Vector3 _lastPosition;
private float _distanceMoved;
protected override void Start()
{
base.Start();
_lastPosition = _t.position;
}
protected override void Update()
{
if(_emit)
{
_distanceMoved += Vector3.Distance(_t.position, _lastPosition);
if (_distanceMoved != 0 && _distanceMoved >= MinVertexDistance)
{
AddPoint(new PCTrailPoint(), _t.position);
_distanceMoved = 0;
}
_lastPosition = _t.position;
}
base.Update();
}
protected override void OnStartEmit()
{
_lastPosition = _t.position;
_distanceMoved = 0;
}
protected override void Reset()
{
base.Reset();
MinVertexDistance = 0.1f;
}
protected override void OnTranslate(Vector3 t)
{
_lastPosition += t;
}
protected override int GetMaxNumberOfPoints()
{
return MaxNumberOfPoints;
}
}
}
fileFormatVersion: 2
guid: 5f742ccbd25717e438dd6fdea4d66bad
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 1000
icon: {fileID: 2800000, guid: 888165c9c85ad6b429824b89f1f4f698, type: 3}
userData:
using System.Collections.Generic;
using System.Linq;
using PigeonCoopToolkit.Utillities;
using UnityEngine;
using System;
namespace PigeonCoopToolkit.Effects.Trails
{
public abstract class TrailRenderer_Base : MonoBehaviour
{
public PCTrailRendererData TrailData;
public bool Emit = false;
protected bool _emit;
protected bool _noDecay;
private PCTrail _activeTrail;
private List<PCTrail> _fadingTrails;
protected Transform _t;
private static Dictionary<Material, List<PCTrail>> _matToTrailList;
private static List<Mesh> _toClean;
private static bool _hasRenderer = false;
private static int GlobalTrailRendererCount = 0;
protected virtual void Awake()
{
GlobalTrailRendererCount++;
if(GlobalTrailRendererCount == 1)
{
_matToTrailList = new Dictionary<Material, List<PCTrail>>();
_toClean = new List<Mesh>();
}
_fadingTrails = new List<PCTrail>();
_t = transform;
_emit = Emit;
if (_emit)
{
_activeTrail = new PCTrail(GetMaxNumberOfPoints());
_activeTrail.IsActiveTrail = true;
OnStartEmit();
}
}
protected virtual void Start()
{
}
protected virtual void LateUpdate()
{
if(_hasRenderer)
return;
_hasRenderer = true;
foreach (KeyValuePair<Material, List<PCTrail>> keyValuePair in _matToTrailList)
{
CombineInstance[] combineInstances = new CombineInstance[keyValuePair.Value.Count];
for (int i = 0; i < keyValuePair.Value.Count; i++)
{
combineInstances[i] = new CombineInstance
{
mesh = keyValuePair.Value[i].Mesh,
subMeshIndex = 0,
transform = Matrix4x4.identity
};
}
Mesh combinedMesh = new Mesh();
combinedMesh.CombineMeshes(combineInstances, true, false);
_toClean.Add(combinedMesh);
DrawMesh(combinedMesh, keyValuePair.Key);
keyValuePair.Value.Clear();
}
}
protected virtual void Update()
{
if (_hasRenderer)
{
_hasRenderer = false;
if (_toClean.Count > 0)
{
foreach (Mesh mesh in _toClean)
{
if (Application.isEditor)
DestroyImmediate(mesh, true);
else
Destroy(mesh);
}
}
_toClean.Clear();
}
if (_matToTrailList.ContainsKey(TrailData.TrailMaterial) == false)
{
_matToTrailList.Add(TrailData.TrailMaterial, new List<PCTrail>());
}
if(_activeTrail != null)
{
UpdatePoints(_activeTrail, Time.deltaTime);
UpdateTrail(_activeTrail, Time.deltaTime);
GenerateMesh(_activeTrail);
_matToTrailList[TrailData.TrailMaterial].Add(_activeTrail);
}
for (int i = _fadingTrails.Count-1; i >= 0; i--)
{
if (_fadingTrails[i] == null || _fadingTrails[i].Points.Any(a => a.TimeActive() < TrailData.Lifetime) == false)
{
if (_fadingTrails[i] != null)
_fadingTrails[i].Dispose();
_fadingTrails.RemoveAt(i);
continue;
}
UpdatePoints(_fadingTrails[i], Time.deltaTime);
UpdateTrail(_fadingTrails[i], Time.deltaTime);
GenerateMesh(_fadingTrails[i]);
_matToTrailList[TrailData.TrailMaterial].Add(_fadingTrails[i]);
}
CheckEmitChange();
}
protected virtual void OnDestroy()
{
GlobalTrailRendererCount--;
if(GlobalTrailRendererCount == 0)
{
if(_toClean != null && _toClean.Count > 0)
{
foreach (Mesh mesh in _toClean)
{
if (Application.isEditor)
DestroyImmediate(mesh, true);
else
Destroy(mesh);
}
}
_toClean = null;
_matToTrailList.Clear();
_matToTrailList = null;
}
if (_activeTrail != null)
{
_activeTrail.Dispose();
_activeTrail = null;
}
if (_fadingTrails != null)
{
foreach (PCTrail fadingTrail in _fadingTrails)
{
if (fadingTrail != null)
fadingTrail.Dispose();
}
_fadingTrails.Clear();
}
}
protected virtual void OnStopEmit()
{
}
protected virtual void OnStartEmit()
{
}
protected virtual void OnTranslate(Vector3 t)
{
}
protected abstract int GetMaxNumberOfPoints();
protected virtual void Reset()
{
if(TrailData == null)
TrailData = new PCTrailRendererData();
TrailData.Lifetime = 1;
TrailData.UsingSimpleColor = false;
TrailData.UsingSimpleSize = false;
TrailData.ColorOverLife = new Gradient();
TrailData.SimpleColorOverLifeStart = Color.white;
TrailData.SimpleColorOverLifeEnd = new Color(1, 1, 1, 0);
TrailData.SizeOverLife = new AnimationCurve(new Keyframe(0, 1), new Keyframe(1, 0));
TrailData.SimpleSizeOverLifeStart = 1;
TrailData.SimpleSizeOverLifeEnd = 0;
}
protected virtual void InitialiseNewPoint(PCTrailPoint newPoint)
{
}
protected virtual void UpdateTrail(PCTrail trail, float deltaTime)
{
}
protected void AddPoint(PCTrailPoint newPoint, Vector3 pos)
{
if (_activeTrail == null)
return;
newPoint.Position = pos;
newPoint.PointNumber = _activeTrail.Points.Count == 0 ? 0 : _activeTrail.Points[_activeTrail.Points.Count - 1].PointNumber + 1;
InitialiseNewPoint(newPoint);
newPoint.SetDistanceFromStart(_activeTrail.Points.Count == 0
? 0
: _activeTrail.Points[_activeTrail.Points.Count - 1].GetDistanceFromStart() + Vector3.Distance(_activeTrail.Points[_activeTrail.Points.Count - 1].Position, pos));
if(TrailData.UseForwardOverride)
{
newPoint.Forward = TrailData.ForwardOverrideRelative
? _t.TransformDirection(TrailData.ForwardOverride.normalized)
: TrailData.ForwardOverride.normalized;
}
_activeTrail.Points.Add(newPoint);
}
private void GenerateMesh(PCTrail trail)
{
trail.Mesh.Clear(false);
Vector3 camForward = Camera.main != null ? Camera.main.transform.forward : Vector3.forward;
if(TrailData.UseForwardOverride)
{
camForward = TrailData.ForwardOverride.normalized;
}
trail.activePointCount = NumberOfActivePoints(trail);
if (trail.activePointCount < 2)
return;
int vertIndex = 0;
for (int i = 0; i < trail.Points.Count; i++)
{
PCTrailPoint p = trail.Points[i];
float timeAlong = p.TimeActive()/TrailData.Lifetime;
if(p.TimeActive() > TrailData.Lifetime)
{
continue;
}
if (TrailData.UseForwardOverride && TrailData.ForwardOverrideRelative)
camForward = p.Forward;
Vector3 cross = Vector3.zero;
if (i < trail.Points.Count - 1)
{
cross =
Vector3.Cross((trail.Points[i + 1].Position - p.Position).normalized, camForward).
normalized;
}
else
{
cross =
Vector3.Cross((p.Position - trail.Points[i - 1].Position).normalized, camForward).
normalized;
}
//yuck! lets move these into their own functions some time
Color c = TrailData.StretchColorToFit ?
(TrailData.UsingSimpleColor ? Color.Lerp(TrailData.SimpleColorOverLifeStart, TrailData.SimpleColorOverLifeEnd, 1 - ((float)vertIndex / (float)trail.activePointCount / 2f)) : TrailData.ColorOverLife.Evaluate(1 - ((float)vertIndex / (float)trail.activePointCount / 2f))) :
(TrailData.UsingSimpleColor ? Color.Lerp(TrailData.SimpleColorOverLifeStart,TrailData.SimpleColorOverLifeEnd,timeAlong) : TrailData.ColorOverLife.Evaluate(timeAlong));
float s = TrailData.StretchSizeToFit ?
(TrailData.UsingSimpleSize ? Mathf.Lerp(TrailData.SimpleSizeOverLifeStart,TrailData.SimpleSizeOverLifeEnd,1 - ((float)vertIndex / (float)trail.activePointCount / 2f)) : TrailData.SizeOverLife.Evaluate(1 - ((float)vertIndex / (float)trail.activePointCount / 2f))) :
(TrailData.UsingSimpleSize ? Mathf.Lerp(TrailData.SimpleSizeOverLifeStart,TrailData.SimpleSizeOverLifeEnd, timeAlong) : TrailData.SizeOverLife.Evaluate(timeAlong));
trail.verticies[vertIndex] = p.Position + cross * s;
if(TrailData.MaterialTileLength <= 0)
{
trail.uvs[vertIndex] = new Vector2((float)vertIndex / (float)trail.activePointCount / 2f, 0);
}
else
{
trail.uvs[vertIndex] = new Vector2(p.GetDistanceFromStart() / TrailData.MaterialTileLength, 0);
}
trail.normals[vertIndex] = camForward;
trail.colors[vertIndex] = c;
vertIndex++;
trail.verticies[vertIndex] = p.Position - cross * s;
if (TrailData.MaterialTileLength <= 0)
{
trail.uvs[vertIndex] = new Vector2((float)vertIndex / (float)trail.activePointCount / 2f, 1);
}
else
{
trail.uvs[vertIndex] = new Vector2(p.GetDistanceFromStart() / TrailData.MaterialTileLength, 1);
}
trail.normals[vertIndex] = camForward;
trail.colors[vertIndex] = c;
vertIndex++;
}
Vector2 finalPosition = trail.verticies[vertIndex-1];
for(int i = vertIndex; i < trail.verticies.Length; i++)
{
trail.verticies[i] = finalPosition;
}
int indIndex = 0;
for (int pointIndex = 0; pointIndex < 2 * (trail.activePointCount - 1); pointIndex++)
{
if(pointIndex%2==0)
{
trail.indicies[indIndex] = pointIndex;
indIndex++;
trail.indicies[indIndex] = pointIndex + 1;
indIndex++;
trail.indicies[indIndex] = pointIndex + 2;
}
else
{
trail.indicies[indIndex] = pointIndex + 2;
indIndex++;
trail.indicies[indIndex] = pointIndex + 1;
indIndex++;
trail.indicies[indIndex] = pointIndex;
}
indIndex++;
}
int finalIndex = trail.indicies[indIndex-1];
for (int i = indIndex; i < trail.indicies.Length; i++)
{
trail.indicies[i] = finalIndex;
}
trail.Mesh.vertices = trail.verticies;
trail.Mesh.SetIndices(trail.indicies, MeshTopology.Triangles, 0);
trail.Mesh.uv = trail.uvs;
trail.Mesh.normals = trail.normals;
trail.Mesh.colors = trail.colors;
}
private void DrawMesh(Mesh trailMesh, Material trailMaterial)
{
Graphics.DrawMesh(trailMesh, Matrix4x4.identity, trailMaterial, gameObject.layer);
}
private void UpdatePoints(PCTrail line, float deltaTime)
{
for (int i = 0; i < line.Points.Count; i++)
{
line.Points[i].Update(_noDecay ? 0 : deltaTime);
}
}
[Obsolete("UpdatePoint is deprecated, you should instead override UpdateTrail and loop through the individual points yourself (See Smoke or Smoke Plume scripts for how to do this).", true)]
protected virtual void UpdatePoint(PCTrailPoint pCTrailPoint, float deltaTime)
{
}
private void CheckEmitChange()
{
if (_emit != Emit)
{
_emit = Emit;
if (_emit)
{
_activeTrail = new PCTrail(GetMaxNumberOfPoints());
_activeTrail.IsActiveTrail = true;
OnStartEmit();
}
else
{
OnStopEmit();
_activeTrail.IsActiveTrail = false;
_fadingTrails.Add(_activeTrail);
_activeTrail = null;
}
}
}
private int NumberOfActivePoints(PCTrail line)
{
int count = 0;
for (int index = 0; index < line.Points.Count; index++)
{
if (line.Points[index].TimeActive() < TrailData.Lifetime) count++;
}
return count;
}
[UnityEngine.ContextMenu("Toggle inspector size input method")]
protected void ToggleSizeInputStyle()
{
TrailData.UsingSimpleSize = !TrailData.UsingSimpleSize;
}
[UnityEngine.ContextMenu("Toggle inspector color input method")]
protected void ToggleColorInputStyle()
{
TrailData.UsingSimpleColor = !TrailData.UsingSimpleColor;
}
public void LifeDecayEnabled(bool enabled)
{
_noDecay = !enabled;
}
/// <summary>
/// Translates every point in the vector t
/// </summary>
public void Translate(Vector3 t)
{
if (_activeTrail != null)
{
for (int i = 0; i < _activeTrail.Points.Count; i++)
{
_activeTrail.Points[i].Position += t;
}
}
if (_fadingTrails != null)
{
foreach (PCTrail fadingTrail in _fadingTrails)
{
for (int i = 0; i < fadingTrail.Points.Count; i++)
{
fadingTrail.Points[i].Position += t;
}
}
}
OnTranslate(t);
}
/// <summary>
/// Insert a trail into this trail renderer.
/// </summary>
/// <param name="from">The start position of the trail.</param>
/// <param name="to">The end position of the trail.</param>
/// <param name="distanceBetweenPoints">Distance between each point on the trail</param>
public void CreateTrail(Vector3 from, Vector3 to, float distanceBetweenPoints)
{
float distanceBetween = Vector3.Distance(from, to);
Vector3 dirVector = to - from;
dirVector = dirVector.normalized;
float currentLength = 0;
CircularBuffer<PCTrailPoint> newLine = new CircularBuffer<PCTrailPoint>(GetMaxNumberOfPoints());
int pointNumber = 0;
while (currentLength < distanceBetween)
{
PCTrailPoint newPoint = new PCTrailPoint();
newPoint.PointNumber = pointNumber;
newPoint.Position = from + dirVector*currentLength;
newLine.Add(newPoint);
InitialiseNewPoint(newPoint);
pointNumber++;
if (distanceBetweenPoints <= 0)
break;
else
currentLength += distanceBetweenPoints;
}
PCTrailPoint lastPoint = new PCTrailPoint();
lastPoint.PointNumber = pointNumber;
lastPoint.Position = to;
newLine.Add(lastPoint);
InitialiseNewPoint(lastPoint);
PCTrail newTrail = new PCTrail(GetMaxNumberOfPoints());
newTrail.Points = newLine;
_fadingTrails.Add(newTrail);
}
/// <summary>
/// Clears all active trails from the system.
/// </summary>
/// <param name="emitState">Desired emit state after clearing</param>
public void ClearSystem(bool emitState)
{
if(_activeTrail != null)
{
_activeTrail.Dispose();
_activeTrail = null;
}
if (_fadingTrails != null)
{
foreach (PCTrail fadingTrail in _fadingTrails)
{
if (fadingTrail != null)
fadingTrail.Dispose();
}
_fadingTrails.Clear();
}
Emit = emitState;
_emit = !emitState;
CheckEmitChange();
}
/// <summary>
/// Get the number of active seperate trail segments.
/// </summary>
public int NumSegments()
{
int num = 0;
if (_activeTrail != null && NumberOfActivePoints(_activeTrail) != 0)
num++;
num += _fadingTrails.Count;
return num;
}
}
public class PCTrail : System.IDisposable
{
public CircularBuffer<PCTrailPoint> Points;
public Mesh Mesh;
public Vector3[] verticies;
public Vector3[] normals;
public Vector2[] uvs;
public Color[] colors;
public int[] indicies;
public int activePointCount;
public bool IsActiveTrail = false;
public PCTrail(int numPoints)
{
Mesh = new Mesh();
Mesh.MarkDynamic();
verticies = new Vector3[2 * numPoints];
normals = new Vector3[2 * numPoints];
uvs = new Vector2[2 * numPoints];
colors = new Color[2 * numPoints];
indicies = new int[2 * (numPoints) * 3];
Points = new CircularBuffer<PCTrailPoint>(numPoints);
}
#region Implementation of IDisposable
public void Dispose()
{
if(Mesh != null)
{
if(Application.isEditor)
UnityEngine.Object.DestroyImmediate(Mesh, true);
else
UnityEngine.Object.Destroy(Mesh);
}
Points.Clear();
Points = null;
}
#endregion
}
public class PCTrailPoint
{
public Vector3 Forward;
public Vector3 Position;
public int PointNumber;
private float _timeActive = 0;
private float _distance;
public virtual void Update(float deltaTime)
{
_timeActive += deltaTime;
}
public float TimeActive()
{
return _timeActive;
}
public void SetTimeActive(float time)
{
_timeActive = time;
}
public void SetDistanceFromStart(float distance)
{
_distance = distance;
}
public float GetDistanceFromStart()
{
return _distance;
}
}
[System.Serializable]
public class PCTrailRendererData
{
public Material TrailMaterial;
public float Lifetime = 1;
public bool UsingSimpleSize = false;
public float SimpleSizeOverLifeStart;
public float SimpleSizeOverLifeEnd;
public AnimationCurve SizeOverLife = new AnimationCurve();
public bool UsingSimpleColor = false;
public Color SimpleColorOverLifeStart;
public Color SimpleColorOverLifeEnd;
public Gradient ColorOverLife;
public bool StretchSizeToFit;
public bool StretchColorToFit;
public float MaterialTileLength = 0;
public bool UseForwardOverride;
public Vector3 ForwardOverride;
public bool ForwardOverrideRelative;
}
}
fileFormatVersion: 2
guid: 87716fa8801130a4994e129a3b6b2fa6
labels:
- BetterTrails
- TrailRenderer
- Smoke
- Trail
- Effects
- skidmarks
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 1000
icon: {instanceID: 0}
userData:
fileFormatVersion: 2
guid: a0065cc65c269bd49a043e3b1ccb9fad
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: b41fcd9d9180890468c8ac882a43e44f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 0f447315ab7b71640872c56b91a36c94
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using System;
using UnityEditor;
using UnityEngine;
namespace PigeonCoopToolkit.Generic.Editor
{
public class InfoDialogue : EditorWindow
{
public VersionInformation versionInformation;
public Texture2D banner;
public string UserGuidePath;
public string AssetStoreContentID;
public bool IsAbout;
void OnGUI()
{
if(banner == null)
{
return;
}
GUI.DrawTexture(new Rect(0, 0, banner.width, banner.height), banner);
GUILayout.Space(banner.height - 18);
if (versionInformation != null) GUILayout.Label(versionInformation.ToString(), EditorStyles.whiteMiniLabel);
GUIStyle lessPaddingNotif = new GUIStyle("NotificationText");
lessPaddingNotif.padding = new RectOffset(10,10,10,10);
lessPaddingNotif.margin = new RectOffset(10, 10, 10, 10);
lessPaddingNotif.stretchWidth = true;
if (!IsAbout)
GUILayout.Label("Thanks for your purchase! ♥", lessPaddingNotif);
else
GUILayout.FlexibleSpace();
GUILayout.BeginHorizontal();
GUILayout.Space(16);
GUILayout.BeginVertical();
GUILayout.Label("We hope you enjoy this tool. Feel free to contact us at our twitter or email - send us feature requests, get some help from us, or just say hi!", "WordWrapLabel");
GUILayout.Label("Don't forget to rate or review "+ (versionInformation != null ? versionInformation.Name : "us") +" on the asset store once you've had a chance to evaluate it", "WordWrapLabel");
GUILayout.EndVertical();
GUILayout.Space(16);
GUILayout.EndHorizontal();
GUILayout.FlexibleSpace();
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
GUILayout.BeginVertical();
if (!string.IsNullOrEmpty(AssetStoreContentID))
if (GUILayout.Button("Review us on the Asset Store!", "LargeButton"))
{
Application.OpenURL("com.unity3d.kharma:content/" + AssetStoreContentID);
}
GUILayout.Space(5);
if (!string.IsNullOrEmpty(UserGuidePath))
{
if (GUILayout.Button("Need help? Read the user guide!","LargeButton"))
{
Application.OpenURL(UserGuidePath);
};
}
GUILayout.Space(5);
if (GUILayout.Button("Want to say hello? @PigeonCoopAU", "LargeButton"))
{
Application.OpenURL("http://www.twitter.com/PigeonCoopAU");
}
GUILayout.EndVertical();
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
GUILayout.FlexibleSpace();
GUILayout.Label("© 2014-" + DateTime.Now.Year + " Pigeon Coop ", EditorStyles.miniLabel);
}
public void Init(Texture2D _banner, VersionInformation _versionInformation, string userGuidePath, string assetStoreContentID = null, bool isAbout = false)
{
banner = _banner;
//ensure the banner is not null.
if (banner == null)
banner = EditorGUIUtility.whiteTexture;
UserGuidePath = userGuidePath;
IsAbout = isAbout;
AssetStoreContentID = assetStoreContentID;
if (System.IO.File.Exists(FileUtil.GetProjectRelativePath(userGuidePath)) == false)
UserGuidePath = null;
versionInformation = _versionInformation;
minSize = maxSize = new Vector2(banner == EditorGUIUtility.whiteTexture ? 350 : banner.width, 500);
}
}
public class InfoDialogueSpawner
{
public InfoDialogueSpawner()
{
EditorApplication.update += Update;
}
private string _projectName;
private string _bannerLocation;
private VersionInformation _versionInfo;
private string _documentationLocation;
private string _projectID;
protected void SetParams(
string projectName,
string bannerLocation,
VersionInformation versionInfo,
string documentationLocation,
string projectID
)
{
_projectName = projectName;
_bannerLocation = bannerLocation;
_versionInfo = versionInfo;
_documentationLocation = documentationLocation;
_projectID = projectID;
}
public virtual void LaunchAbout()
{
InfoDialogue dialogue = EditorWindow.GetWindow<InfoDialogue>(
true,
_projectName);
dialogue.Init(Resources.Load(_bannerLocation) as Texture2D,_versionInfo,
Application.dataPath + _documentationLocation,
_projectID,
true
);
}
void Update()
{
if (EditorPrefs.GetBool("PCTK/" + _projectID+"/IntroDialogueLaunched") == false)
{
EditorPrefs.SetBool("PCTK/" + _projectID + "/IntroDialogueLaunched", true);
InfoDialogue dialogue = EditorWindow.GetWindow<InfoDialogue>(
true,
_projectName);
dialogue.Init(Resources.Load(_bannerLocation) as Texture2D, _versionInfo,
Application.dataPath + _documentationLocation,
_projectID
);
}
else
{
EditorApplication.update -= Update;
}
}
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: d27328469399f4443bdb51b74f6a00f0
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
namespace PigeonCoopToolkit.Generic
{
[System.Serializable]
public class VersionInformation
{
public string Name;
public int Major = 1;
public int Minor = 0;
public int Patch = 0;
public VersionInformation(string name, int major, int minor, int patch)
{
Name = name;
Major = major;
Minor = minor;
Patch = patch;
}
public override string ToString()
{
return string.Format("{0} {1}.{2}.{3}", Name, Major, Minor, Patch);
}
public bool Match(VersionInformation other, bool looseMatch)
{
if(looseMatch)
{
return other.Name == Name &&
other.Major == Major &&
other.Minor == Minor;
}
else
{
return other.Name == Name &&
other.Major == Major &&
other.Minor == Minor &&
other.Patch == Patch;
}
}
}
}
fileFormatVersion: 2
guid: 1d58a7e753bea0e4c84779d092563363
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
fileFormatVersion: 2
guid: 6895bed2bbfa93146a06968a755699d4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using System;
using System.Collections;
using System.Collections.Generic;
namespace PigeonCoopToolkit.Utillities
{
public class CircularBuffer<T> : IList<T>, ICollection<T>,
IEnumerable<T>, IEnumerable
{
/// <summary>
/// Creates a new instance of a <see cref="RingBuffer&lt;T&gt;"/> with a
/// specified cache size.
// http://florianreischl.blogspot.com/2010/01/generic-c-ringbuffer.html
/// </summary>
/// <param name="capacity">The maximal count of items to be stored within
/// the ring buffer.</param>
public CircularBuffer(int capacity)
{
// validate capacity
if (capacity <= 0)
throw new ArgumentException("Must be greater than zero", "capacity");
// set capacity and init the cache
Capacity = capacity;
_buffer = new T[capacity];
}
/// <summary>
/// the internal buffer
/// </summary>
T[] _buffer;
/// <summary>
/// The all-over position within the ring buffer. The position
/// increases continously by adding new items to the buffer. This
/// value is needed to calculate the current relative position within the
/// buffer.
/// </summary>
int _position;
/// <summary>
/// The current version of the buffer, this is required for a correct
/// exception handling while enumerating over the items of the buffer.
/// </summary>
long _version;
/// <summary>
/// Gets or sets an item for a specified position within the ring buffer.
/// </summary>
/// <param name="index">The position to get or set an item.</param>
/// <returns>The fond item at the specified position within the ring buffer.
/// </returns>
/// <exception cref="IndexOutOfRangeException"></exception>
public T this[int index] {
get {
// validate the index
if (index < 0 || index >= Count)
throw new IndexOutOfRangeException();
// calculate the relative position within the rolling base array
int index2 = (_position - Count + index) % Capacity;
return _buffer[index2];
}
set { Insert(index, value); }
}
/// <summary>
/// Gets the maximal count of items within the ring buffer.
/// </summary>
public int Capacity { get; private set; }
/// <summary>
/// Get the current count of items within the ring buffer.
/// </summary>
public int Count { get; private set; }
/// <summary>
/// Adds a new item to the buffer.
/// </summary>
/// <param name="item">The item to be added to the buffer.</param>
public void Add(T item) {
// add a new item to the current relative position within the
// buffer and increase the position
_buffer[_position++ % Capacity] = item;
// increase the count if capacity is not yet reached
if (Count < Capacity) Count++;
// buffer changed; next version
_version++;
}
/// <summary>
/// Clears the whole buffer and releases all referenced objects
/// currently stored within the buffer.
/// </summary>
public void Clear() {
for (int i = 0; i < Count; i++)
_buffer[i] = default(T);
_position = 0;
Count = 0;
_version++;
}
/// <summary>
/// Determines if a specified item is currently present within
/// the buffer.
/// </summary>
/// <param name="item">The item to search for within the current
/// buffer.</param>
/// <returns>True if the specified item is currently present within
/// the buffer; otherwise false.</returns>
public bool Contains(T item) {
int index = IndexOf(item);
return index != -1;
}
/// <summary>
/// Copies the current items within the buffer to a specified array.
/// </summary>
/// <param name="array">The target array to copy the items of
/// the buffer to.</param>
/// <param name="arrayIndex">The start position witihn the target
/// array to start copying.</param>
public void CopyTo(T[] array, int arrayIndex) {
for (int i = 0; i < Count; i++) {
array[i + arrayIndex] = _buffer[(_position - Count + i) % Capacity];
}
}
/// <summary>
/// Gets an enumerator over the current items within the buffer.
/// </summary>
/// <returns>An enumerator over the current items within the buffer.
/// </returns>
public IEnumerator<T> GetEnumerator() {
long version = _version;
for (int i = 0; i < Count; i++) {
if (version != _version)
throw new InvalidOperationException("Collection changed");
yield return this[i];
}
}
/// <summary>
/// Gets the position of a specied item within the ring buffer.
/// </summary>
/// <param name="item">The item to get the current position for.</param>
/// <returns>The zero based index of the found item within the
/// buffer. If the item was not present within the buffer, this
/// method returns -1.</returns>
public int IndexOf(T item) {
// loop over the current count of items
for (int i = 0; i < Count; i++) {
// get the item at the relative position within the internal array
T item2 = _buffer[(_position - Count + i) % Capacity];
// if both items are null, return true
if (null == item && null == item2)
return i;
// if equal return the position
if (item != null && item.Equals(item2))
return i;
}
// nothing found
return -1;
}
/// <summary>
/// Inserts an item at a specified position into the buffer.
/// </summary>
/// <param name="index">The position within the buffer to add
/// the new item.</param>
/// <param name="item">The new item to be added to the buffer.</param>
/// <exception cref="IndexOutOfRangeException"></exception>
/// <remarks>
/// If the specified index is equal to the current count of items
/// within the buffer, the specified item will be added.
///
/// <b>Warning</b>
/// Frequent usage of this method might become a bad idea if you are
/// working with a large buffer capacity. The insertion of an item
/// at a specified position within the buffer causes causes all present
/// items below the specified position to be moved one position.
/// </remarks>
public void Insert(int index, T item) {
// validate index
if (index < 0 || index > Count)
throw new IndexOutOfRangeException();
// add if index equals to count
if (index == Count) {
Add(item);
return;
}
// get the maximal count of items to be moved
int count = Math.Min(Count, Capacity - 1) - index;
// get the relative position of the new item within the buffer
int index2 = (_position - Count + index) % Capacity;
// move all items below the specified position
for (int i = index2 + count; i > index2; i--) {
int to = i % Capacity;
int from = (i - 1) % Capacity;
_buffer[to] = _buffer[from];
}
// set the new item
_buffer[index2] = item;
// adjust storage information
if (Count < Capacity) {
Count++;
_position++;
}
// buffer changed; next version
_version++;
}
/// <summary>
/// Removes a specified item from the current buffer.
/// </summary>
/// <param name="item">The item to be removed.</param>
/// <returns>True if the specified item was successfully removed
/// from the buffer; otherwise false.</returns>
/// <remarks>
/// <b>Warning</b>
/// Frequent usage of this method might become a bad idea if you are
/// working with a large buffer capacity. The removing of an item
/// requires a scan of the buffer to get the position of the specified
/// item. If the item was found, the deletion requires a move of all
/// items stored abouve the found position.
/// </remarks>
public bool Remove(T item) {
// find the position of the specified item
int index = IndexOf(item);
// item was not found; return false
if (index == -1)
return false;
// remove the item at the specified position
RemoveAt(index);
return true;
}
/// <summary>
/// Removes an item at a specified position within the buffer.
/// </summary>
/// <param name="index">The position of the item to be removed.</param>
/// <exception cref="IndexOutOfRangeException"></exception>
/// <remarks>
/// <b>Warning</b>
/// Frequent usage of this method might become a bad idea if you are
/// working with a large buffer capacity. The deletion requires a move
/// of all items stored abouve the found position.
/// </remarks>
public void RemoveAt(int index) {
// validate the index
if (index < 0 || index >= Count)
throw new IndexOutOfRangeException();
// move all items above the specified position one step
// closer to zeri
for (int i = index; i < Count - 1; i++) {
// get the next relative target position of the item
int to = (_position - Count + i) % Capacity;
// get the next relative source position of the item
int from = (_position - Count + i + 1) % Capacity;
// move the item
_buffer[to] = _buffer[from];
}
// get the relative position of the last item, which becomes empty
// after deletion and set the item as empty
int last = (_position - 1) % Capacity;
_buffer[last] = default(T);
// adjust storage information
_position--;
Count--;
// buffer changed; next version
_version++;
}
/// <summary>
/// Gets if the buffer is read-only. This method always returns false.
/// </summary>
bool ICollection<T>.IsReadOnly { get { return false; } }
/// <summary>
/// See generic implementation of <see cref="GetEnumerator"/>.
/// </summary>
/// <returns>See generic implementation of <see cref="GetEnumerator"/>.
/// </returns>
IEnumerator IEnumerable.GetEnumerator() {
return this.GetEnumerator();
}
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 51a19be087405654c8b4b50c67fa9200
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
fileFormatVersion: 2
guid: 7edece18506ea4948996173310389d1b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using UnityEditor;
using UnityEngine;
namespace PigeonCoopToolkit.Utillities.Editor
{
[CustomPropertyDrawer(typeof(Range))]
public class RangePropertyDrawer : PropertyDrawer
{
public override void OnGUI(UnityEngine.Rect position, SerializedProperty property, UnityEngine.GUIContent label)
{
SerializedProperty Min = property.FindPropertyRelative("Min");
SerializedProperty Max = property.FindPropertyRelative("Max");
Vector2 newMinMax = Vector2.zero;
position.height = 16;
EditorGUI.LabelField(position, label);
position.y += 20;
position.width = position.width / 2;
newMinMax.x = EditorGUI.FloatField(position, "Min", Min.floatValue);
position.x += position.width;
newMinMax.y = EditorGUI.FloatField(position, "Max", Max.floatValue);
if (newMinMax.x > newMinMax.y)
newMinMax.x = newMinMax.y;
Min.floatValue = newMinMax.x;
Max.floatValue = newMinMax.y;
}
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
{
return base.GetPropertyHeight(property, label) + 20;
}
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 1eefccc24adb7c54a990dc0f9e669651
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using UnityEngine;
namespace PigeonCoopToolkit.Utillities
{
public static class GizmosExtra
{
public static void GizmosDrawCircle(Vector3 position, Vector3 up, float size, int divisions)
{
Vector3 offset = (Quaternion.Euler(90,0,0) * (up* size)) ;
for (int i = 0; i < divisions; i++)
{
Vector3 newOffset = Quaternion.AngleAxis(360f / divisions, up) * offset;
Gizmos.DrawLine(position + offset, position + newOffset);
offset = newOffset;
}
}
public static void GizmosDrawArrow(Vector3 from, Vector3 to, float arrowSize)
{
Gizmos.DrawLine(from, to);
Vector3 dir = to - from;
dir = dir.normalized*arrowSize;
Gizmos.DrawLine(to, to - Quaternion.Euler(0, 0, 45)*dir);
Gizmos.DrawLine(to, to - Quaternion.Euler(0, 0, -45)*dir);
}
}
}
fileFormatVersion: 2
guid: ac8be081485ba1141bd28334fe9eabec
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
namespace PigeonCoopToolkit.Utillities
{
[System.Serializable]
public class Range
{
public float Min;
public float Max;
public bool WithinRange(float value)
{
return Min <= value && Max >= value;
}
}
}
fileFormatVersion: 2
guid: db4c92c149ebf004a83b3776345ca8d4
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
Assets\#E1_Plugins\RayFire\Scripts\Classes\Rigid\RFLimitations.cs
90# depth = 5; //jinrui
\ No newline at end of file
fileFormatVersion: 2
guid: a08702c0d827a4c49948c706945fed45
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
......@@ -87,6 +87,7 @@ namespace RayFire
{
solidity = limitations.solidity;
depth = limitations.depth;
depth = 5; //jinrui
time = limitations.time;
size = limitations.size;
visible = limitations.visible;
......
......@@ -2585,6 +2585,251 @@ MeshRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &3107637361306732324
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5829040194720139651}
- component: {fileID: 4942360288089028462}
- component: {fileID: 8957961724755313698}
- component: {fileID: 4729330591097657856}
m_Layer: 0
m_Name: column
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5829040194720139651
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3107637361306732324}
m_LocalRotation: {x: -0, y: 0.38268343, z: -0, w: 0.92387956}
m_LocalPosition: {x: 0, y: 0.25, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1696318591765668290}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 45, z: 0}
--- !u!33 &4942360288089028462
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3107637361306732324}
m_Mesh: {fileID: 4300002, guid: ce3a603180ab1e848be4637e8ddfe198, type: 3}
--- !u!23 &8957961724755313698
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3107637361306732324}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: b87c449fd228128468ce1e1bb613a814, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!114 &4729330591097657856
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3107637361306732324}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: eb6e52f37bca2404fac00b69fd8d21f8, type: 3}
m_Name:
m_EditorClassIdentifier:
initialization: 1
simulationType: 0
objectType: 0
demolitionType: 1
physics:
materialType: 8
material: {fileID: 0}
massBy: 0
mass: 1
colliderType: 0
useGravity: 1
dampening: 0.8
rigidBody: {fileID: 0}
meshCollider: {fileID: 0}
clusterColliders: []
activation:
byVelocity: 0
byOffset: 0
byDamage: 0
byActivator: 0
byImpact: 0
byConnectivity: 0
unyielding: 0
activatable: 0
limitations:
solidity: 10
depth: 2
time: 0.2
size: 0.1
visible: 0
sliceByBlade: 1
bound:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
meshDemolition:
amount: 15
variation: 0
depthFade: 0.5
contactBias: 0
seed: 1
useShatter: 0
meshInput: 9
properties:
colliderType: 0
sizeFilter: 0
decompose: 0
removeCollinear: 0
layer:
runtimeCaching:
type: 0
frames: 3
fragments: 4
skipFirstDemolition: 0
inProgress: 0
wasUsed: 0
stop: 0
cacheRotationStart: {x: 0, y: 0, z: 0, w: 1}
mesh: {fileID: 0}
scrShatter: {fileID: 0}
clusterDemolition:
connectivity: 0
minimumArea: 0
minimumSize: 0
percentage: 0
seed: 0
type: 0
ratio: 15
units: 1
shardArea: 100
shardDemolition: 0
minAmount: 3
maxAmount: 6
demolishable: 1
collapse:
type: 1
start: 0
end: 75
steps: 10
duration: 15
clsCount: 1
cluster:
id: -1
tm: {fileID: 0}
depth: 0
pos: {x: 0, y: 0, z: 0}
rot: {x: 0, y: 0, z: 0, w: 0}
bound:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
demolishable: 1
rigid: {fileID: 0}
shards: []
areaCollapse: 0
minimumArea: 0
maximumArea: 0
sizeCollapse: 0
minimumSize: 0
maximumSize: 0
randomCollapse: 0
randomSeed: 0
minorClusters: []
cn: 0
nd: 0
referenceDemolition:
reference: {fileID: 0}
randomList: []
addRigid: 1
inheritScale: 1
materials:
innerMaterial: {fileID: 0}
mappingScale: 0.1
outerMaterial: {fileID: 0}
needNewMat: 0
damage:
enable: 0
maxDamage: 100
currentDamage: 0
collect: 0
multiplier: 1
fading:
onDemolition: 1
onActivation: 0
lifeType: 4
lifeTime: 7
lifeVariation: 3
fadeType: 0
fadeTime: 5
sizeFilter: 0
reset:
transform: 1
damage: 1
action: 1
destroyDelay: 1
mesh: 4
fragments: 0
shards: 0
initialized: 0
meshes: []
pivots: []
rfMeshes: []
subIds: []
fragments: []
cacheRotation: {x: 0, y: 0, z: 0, w: 0}
transForm: {fileID: 0}
rootChild: {fileID: 0}
rootParent: {fileID: 0}
meshFilter: {fileID: 0}
meshRenderer: {fileID: 0}
skinnedMeshRend: {fileID: 0}
debrisList: []
dustList: []
restriction: {fileID: 0}
sound: {fileID: 0}
--- !u!1 &3232076771471549865
GameObject:
m_ObjectHideFlags: 0
......@@ -3089,6 +3334,99 @@ MeshRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &3857347839970904223
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3391661974792589287}
- component: {fileID: 5809878061040205099}
- component: {fileID: 2541282523726141445}
- component: {fileID: 7117536323616531269}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3391661974792589287
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3857347839970904223}
m_LocalRotation: {x: 0.06162845, y: -0.70441604, z: 0.06162845, w: 0.70441604}
m_LocalPosition: {x: 23, y: 9, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 4750666117419860634}
m_Father: {fileID: 8039451422228900905}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 10, y: -90, z: 0}
--- !u!20 &5809878061040205099
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3857347839970904223}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.22352943, g: 0.47058827, b: 0.7411765, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 35
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!124 &2541282523726141445
Behaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3857347839970904223}
m_Enabled: 1
--- !u!81 &7117536323616531269
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3857347839970904223}
m_Enabled: 1
--- !u!1 &3868566437023169338
GameObject:
m_ObjectHideFlags: 0
......@@ -4300,6 +4638,37 @@ MeshRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &5223751160571564685
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1696318591765668290}
m_Layer: 0
m_Name: column_Cut
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &1696318591765668290
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5223751160571564685}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 5829040194720139651}
m_Father: {fileID: 8039451421291814000}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5314717958447125097
GameObject:
m_ObjectHideFlags: 0
......@@ -7169,6 +7538,7 @@ Transform:
- {fileID: 1149244112415760881}
- {fileID: 1642599858194731989}
- {fileID: 4507662082105730220}
- {fileID: 1696318591765668290}
m_Father: {fileID: 8039451421880427363}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
......@@ -7364,89 +7734,6 @@ Transform:
m_Father: {fileID: 8039451421880427363}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8039451422041034365
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8039451422041034364}
- component: {fileID: 8039451422041034366}
- component: {fileID: 8039451422041034367}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8039451422041034364
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8039451422041034365}
m_LocalRotation: {x: 0.06162845, y: -0.70441604, z: 0.06162845, w: 0.70441604}
m_LocalPosition: {x: 23, y: 9, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 8039451422228900905}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 10, y: -90, z: 0}
--- !u!20 &8039451422041034366
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8039451422041034365}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.22352943, g: 0.47058827, b: 0.7411765, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 35
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!81 &8039451422041034367
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8039451422041034365}
m_Enabled: 1
--- !u!1 &8039451422228900910
GameObject:
m_ObjectHideFlags: 0
......@@ -7474,7 +7761,7 @@ Transform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 8039451422041034364}
- {fileID: 3391661974792589287}
m_Father: {fileID: 8039451422639618049}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
......@@ -7974,6 +8261,145 @@ MeshRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &8451326314747629789
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4750666117419860634}
- component: {fileID: 6600834349522115336}
- component: {fileID: 8050529747347520025}
m_Layer: 0
m_Name: MouseFollower
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4750666117419860634
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8451326314747629789}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3391661974792589287}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &6600834349522115336
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8451326314747629789}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8cbea67046d33fb44946ed794b0b7387, type: 3}
m_Name:
m_EditorClassIdentifier:
Trails:
- {fileID: 8050529747347520025}
--- !u!114 &8050529747347520025
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8451326314747629789}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 62cd7e0b3a08cf84e82658d9a3eaeb32, type: 3}
m_Name:
m_EditorClassIdentifier:
TrailData:
TrailMaterial: {fileID: 2100000, guid: cc69b18ee8bd8c941a1a02d2e0919b45, type: 2}
Lifetime: 0.25
UsingSimpleSize: 0
SimpleSizeOverLifeStart: 0
SimpleSizeOverLifeEnd: 0
SizeOverLife:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.15
value: 0.005
inSlope: -0.0010454096
outSlope: -0.0010454096
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
UsingSimpleColor: 0
SimpleColorOverLifeStart: {r: 0, g: 0, b: 0, a: 0}
SimpleColorOverLifeEnd: {r: 0, g: 0, b: 0, a: 0}
ColorOverLife:
serializedVersion: 2
key0: {r: 0.9490196, g: 0.6117647, b: 0.105882354, a: 1}
key1: {r: 1, g: 0, b: 0, a: 0}
key2: {r: 0, g: 0, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 65535
ctime2: 0
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_NumColorKeys: 2
m_NumAlphaKeys: 2
StretchSizeToFit: 0
StretchColorToFit: 0
MaterialTileLength: 0
UseForwardOverride: 1
ForwardOverride: {x: 0, y: 0, z: 1}
ForwardOverrideRelative: 1
Emit: 0
MinControlPointDistance: 0.01
MaxControlPoints: 50
PointsBetweenControlPoints: 4
--- !u!1 &8499159788693321170
GameObject:
m_ObjectHideFlags: 0
......@@ -8885,15 +9311,15 @@ PrefabInstance:
objectReference: {fileID: 2100000, guid: bd47440d532bf19429998480723a514f, type: 2}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ce3a603180ab1e848be4637e8ddfe198, type: 3}
--- !u!23 &1642599858196500789 stripped
MeshRenderer:
m_CorrespondingSourceObject: {fileID: 2300000, guid: ce3a603180ab1e848be4637e8ddfe198,
--- !u!1 &1642599858194501621 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 100000, guid: ce3a603180ab1e848be4637e8ddfe198,
type: 3}
m_PrefabInstance: {fileID: 1642599858194598229}
m_PrefabAsset: {fileID: 0}
--- !u!33 &1642599858197599221 stripped
MeshFilter:
m_CorrespondingSourceObject: {fileID: 3300000, guid: ce3a603180ab1e848be4637e8ddfe198,
--- !u!23 &1642599858196500789 stripped
MeshRenderer:
m_CorrespondingSourceObject: {fileID: 2300000, guid: ce3a603180ab1e848be4637e8ddfe198,
type: 3}
m_PrefabInstance: {fileID: 1642599858194598229}
m_PrefabAsset: {fileID: 0}
......@@ -8903,9 +9329,9 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 1642599858194598229}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1642599858194501621 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 100000, guid: ce3a603180ab1e848be4637e8ddfe198,
--- !u!33 &1642599858197599221 stripped
MeshFilter:
m_CorrespondingSourceObject: {fileID: 3300000, guid: ce3a603180ab1e848be4637e8ddfe198,
type: 3}
m_PrefabInstance: {fileID: 1642599858194598229}
m_PrefabAsset: {fileID: 0}
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment